仅在检查另一个表的值后更新一个表

时间:2013-07-11 14:36:10

标签: mysql

我想知道是否有人可以帮我解决这个问题。 我想更新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

如何使用一个更新语句执行此操作?

1 个答案:

答案 0 :(得分:2)

此查询假定Table2.Result的值仅为10

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