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

标签 mysql sql join sql-update

我有 2 个表:

TBL1

  • 标准数
  • 身份证
  • 检查

TBL2

  • 标准数
  • 更新我

STDNum 是公共(public)列。在 TBL1 中,同一个 STDNum 可以有多个具有不同 ID 的行(在 TBL2 中不是这种情况)。 我想要的结果更新 TBL2 中的 UpdateMe(将其值设置为 1)如果(< em>并且仅当) Check TBL1 中该特定STDNum 的列全部设置为 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/

相关文章:

mysql - 获取未记录在联接表中的行

php - 通过逗号分隔搜索不同的列

mysql - 使用 `group by` 键中的函数优化查询?

c# - 为什么我计算行数的原始查询总是返回 -1?

sql - 日期大于给定日期查询的 Rails

mysql - 跨多个服务器连接表

Sql 从另一个表的一组结果中以数组形式查询新列

mysql - 如何使我本地的 mySQL 数据库可以从不同的机器访问?

java - ManyToOne 关系,其中通过两列的串联引用一列

MySQL GROUP_CONCAT 重复条目