如何根据基于另一个表的case语句更新表? (在Mysql中)

时间:2013-02-11 13:42:34

标签: mysql sql join sql-update

我有两张桌子:

TBL1

  • STDNum
  • ID
  • 检查

TBL2

  • STDNum
  • UpdateMe

STDNum是公共列。在TBL1中,相同的STDNum可以有多个具有不同ID的行(在TBL2上不是这种情况)。 我想要的结果更新TBL2中的UpdateMe将其值设置为1 )IF(和仅限IF )TBL1中Check 列的特定 STDNum全部设置为1

有人可以帮帮我吗?还是有什么想法?

1 个答案:

答案 0 :(得分:1)

UPDATE  tbl2 b
        INNER JOIN
        (
            SELECT  STDNum
            FROM    tbl1 s
            GROUP   BY STDNum
            HAVING  MAX(s.check) = MIN(s.Check) AND
                    MAX(s.Check) = 1
        ) a ON a.STDNum = b.STDNum
SET     b.UpdateMe = 1

OR

UPDATE  tbl2 b
        INNER JOIN
        (
            SELECT  STDNum
            FROM    tbl1
            GROUP   BY STDNum
            HAVING  SUM(Check = 1) = COUNT(*)
        ) a ON a.STDNum = b.STDNum
SET     b.UpdateMe = 1