我有两张桌子:
待定1
标准
身份证件
支票
TBL2级
标准
更新名
STDNum是公共列。在TBL1中,同一STDNum可以有多个具有不同id的行(TBL2上不是这样)。我想要的结果是更新TBL2中的UpdateMe列(将其值设置为1),如果(并且仅当)该特定STDNum的TBL1中的Check列都设置为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

或者
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

关于mysql - 由于基于另一个表的case语句,如何更新表? (在Mysql中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14813230/

10-12 12:46