我想知道是否有人可以帮我解决这个问题。 我想更新TABLE1 SET“1”中的列“结果”,当属于tab1ID-ID的ID(TABLE1)的所有值都在列结果中时,值为1。 table1中的ID与table2中的tab1ID有关。希望这会说清楚:
表1:
id | result |
1 | null |
2 | null |
3 | null |
表2:
id | tab1ID | result |
1 | 1 | 1
2 | 1 | 0
3 | 1 | 1
4 | 2 | 1
5 | 2 | 1
6 | 2 | 1
7 | 3 | 0
8 | 3 | 1
9 | 3 | 1
UPDATE-Satement现在应该UPDATE TABLE1,如下所示:
表1:
id | result |
1 | 0 |
2 | 1 |
3 | 0 |
ID2的结果现在为1,因为table2中所有属于tab1ID(2)的行都具有结果值1
如何使用一个更新语句执行此操作?
答案 0 :(得分:2)
此查询假定Table2.Result
的值仅为1
和0
。
UPDATE table1 a
INNER JOIN
(
SELECT tab1ID, COUNT(*) = SUM(result) result
FROM table2
GROUP BY tab1ID
) b ON a.ID = b.tab1ID
SET a.result = b.result