【问题标题】:How to update a table due to case statement based on another table? (in Mysql)由于 case 语句基于另一个表,如何更新表? (在 Mysql 中)
【发布时间】:2013-01-26 14:51:21
【问题描述】:

我有两张桌子:

TBL1

  • 标准编号
  • 身份证
  • 检查

TBL2

  • 标准编号
  • 更新我

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

有人可以帮帮我吗?或者有什么想法吗?

【问题讨论】:

    标签: mysql sql join sql-update


    【解决方案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 新手,我有点不明白你在代码中包含的 b 和 a。它们只是变量吗?谢谢。
    • ab 被称为 ALIAS。当您有较长的表名时,它们很有用。 如果你问我为什么选择ab作为他们的别名,那是因为我习惯了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多