2012-10-11 59 views
0

我們可以編寫查詢可以基於3個記錄領域成功實現更新單個記錄。多個條件檢查和更新MySQL查詢問題

第一表格Table 1:

第一表中的字段

ID INT

名VARCHAR

狀態枚舉( '全', '半' )默認爲空

二表:表2

二表字段

ID INT

table1_id INT - 外鍵

qty1 INT

qty2 INT

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

table1的

測試

NULL

table2中

ID - > 1

table1_id - > 1

qty1 - > 1

qty2 - > 2


ID - > 2

table1_id - > 1

qty1 - > 2

qty2 - > 2

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

一種曼尼關係

表1 - >表2

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

條件以(表1的)狀態字段更新爲「全」是, 對於表2中的所有記錄table1_id,已經Qty1 == qty2(用於table1_id的所有記錄)和qty2!= 0

別人剩下的「半壁江山」

回答

1

如果你總Table2,走的是布爾表達式,而您希望測試每條記錄的SUM(),其結果將是匹配的記錄數(因爲TRUE是轉換爲1FALSE0)。因此,一個只需要檢查的匹配記錄數等於總記錄數:

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

看到它的sqlfiddle