MySQL查询问题,用于多个条件检查和更新

时间:2012-10-11 11:19:29

标签: mysql

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

E.g

第一张表:table1

第一个表格字段

id INT

名称varchar

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

第二张表:table2

第二个表格字段

id INT

table1_id int - 外键

qty1 int

qty2 int

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

表1

1

测试

NULL

表2

id - > 1

table1_id - > 1

qty1 - > 1

qty2 - > 2


id - > 2

table1_id - > 1

qty1 - > 2

qty2 - > 2

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

One to Manny Relationship

表1 - >表2

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

更新状态字段(table1)为'Full'的条件是, 对于table2中table1_id的所有记录,有Qty1 == qty2(对于table1_id的所有记录)和qty2!= 0

否则休息为'半'

1 个答案:

答案 0 :(得分:1)

如果你聚合Table2,取你希望测试每条记录的布尔表达式的SUM(),结果将是匹配记录的数量(因为转换了TRUE1FALSE0)。因此,只需要检查匹配记录的数量是否等于记录总数:

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

sqlfiddle上查看。