2013-07-11 38 views
0

我想知道有人能幫我解決這個問題。 我想要更新table1 SET「1」列中所有屬於tab1ID值的ID(TABLE1)在列結果中的值爲1. 表1中的ID與表2中的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 

上的更新的語句應立即更新TABLE1是這樣的:

表1:

id | result | 
1 | 0 |  
2 | 1 |  
3 | 0 | 

現在在ID2的結果是1,因爲table2中所有屬於tab1ID(2)的行都有結果值1

我怎樣才能用一個更新語句做到這一點?

回答

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 
+0

非常感謝您的幫助。這工作正常!但是最初Table2.Result = NULL。這意味着,如果其中一個Teble2.results爲NULL,那麼Table1.result將爲0。對不起,我應該提到它之前..我的壞.. – user2569468

+0

因此'NULL'計數或不?根據你給出的例子,如果有另外的記錄'10 | 2 | NULL',是表1中'1'還是'0'中'2'的值? –

+0

在這種情況下,我想不更新table1。我只想更新table1,如果所有的表2結果是1或0.也許,這是不可能與純粹的MySQL,我首先必須檢查與PHP .. – user2569468

相關問題