【问题标题】:MySQL query issue for multiple condition check and update用于多个条件检查和更新的 MySQL 查询问题
【发布时间】:2012-10-02 01:03:24
【问题描述】:

我们是否可以编写查询,该查询可以根据成功实现 3 个记录字段来更新单个记录。

例如

第一个表:table1

第一个表字段

id INT

名称变量

status enum('full', 'half') 默认为 Null

第二张表:table2

第二个表格字段

id INT

table1_id int - 外键

qty1 整数

qty2 整数

============

表1

1

测试

表2

id -> 1

table1_id -> 1

数量1 -> 1

数量2 - > 2


id -> 2

table1_id -> 1

数量1 -> 2

数量2 - > 2

================

一对多关系

表 1 --> 表 2

========================

将状态字段(表 1)更新为“完整”的条件是, 对于 table2 中 table1_id 的所有记录,有 Qty1 == qty2 (对于 table1_id 的所有记录)和 qty2 !=0

否则休息到“一半”

【问题讨论】:

    标签: mysql


    【解决方案1】:

    如果你聚合Table2,取你希望测试每条记录的布尔表达式的SUM(),结果将是匹配记录的数量(因为TRUE被转换为1和@ 987654326@ 至0)。因此,只需检查匹配记录数是否等于记录总数即可:

    UPDATE Table1 SET status = (
      SELECT IF(SUM(Qty1=Qty2 AND Qty2!=0) = COUNT(*), 'full', 'half')
      FROM   Table2
      WHERE  table1_id = Table1.id
    )
    

    sqlfiddle 上查看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 2011-07-12
      • 2016-08-14
      • 2020-10-14
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多