mysql - 使用 case 语句 (MYSQL) 根据另一个表中的值更新一个表

标签 mysql

我正在尝试运行以下查询,以使用 case 语句根据另一个表中的值更新一个表。我收到以下错误。

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from tbl_a as a, tbl_b as b
  WHERE a.DIV_NO = b.' at line 12

这里是查询:

UPDATE a
  SET
    a.MIN_5 = b.Min_Five,
    a.IN_PR = b.Ad_Flag ,
    a.FRC = (
                    CASE
                       WHEN b.Prc_Fl = 'N' THEN 'Y'
                       WHEN b.Prc_Fl = 'Y' THEN 'N'
                       ELSE 'D'
                    END
            )
  FROM tbl_a AS a, tbl_b AS b
  WHERE a.DIV_NO = b.Div_num
    AND a.OFR_ID = b.Flg ;

最佳答案

JOIN 试试这个

UPDATE 
  tbl_a AS a
  JOIN   
  tbl_b AS b ON (a.DIV_NO = b.Div_num AND  a.OFR_ID = b.Flg) 
  SET
  a.MIN_5 = b.Min_Five,
  a.IN_PR = b.Ad_Flag,
  a.FRC = 
    CASE
      WHEN b.Prc_Fl = 'N' 
      THEN 'Y' 
      WHEN b.Prc_Fl = 'Y' 
      THEN 'N' 
      ELSE 'D' 
    END

关于mysql - 使用 case 语句 (MYSQL) 根据另一个表中的值更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21914358/

相关文章:

MYSQL:如何在 mysql GROUP BY 查询中返回所有不同的行

mysql - 为简单的三表模式优化 MySQL LEFT JOIN 查询?

带有子分区的 MySQL ALTER TABLE 失败

mysql - 用作子查询时产生不同结果的查询

mysql - 出现两个外键就一定是多对多关系吗?

php - joomla下执行的php从sql中检索多行数据

php - 如何从数据库中获取最新的10条记录

php - Mysql - 验证结果的一部分是否存在于另一个表中

mysql - MySQL 有聚合 ST_UNION() 吗?

mysql - 当我使用 IN 操作时,mysql 如何运行查询