2013-10-01 41 views
1

我有兩個表名爲supplyequipment。這兩個表有一個名爲公共字段:IAR_NO在mysql中的單個查詢中更新兩個表

現在,我要的是使用單個查詢,都來自這在其IAR_NO有0這兩個表中的記錄進行更新。

什麼可能是最好的查詢呢?

我目前正在使用但不工作

update supply, equipment 
set supply.IAR_NO = "9", equipment.IAR_NO= "9 " 
where equipment.IAR_NO = 0 and supply.IAR_NO = 0 
+0

難道你不能在兩個查詢中使用事務嗎? –

+0

您需要在事務中單獨更新兩個表 – Ashok

+0

無法在單個查詢中更新表中的鍵,需要在兩個分離的查詢中執行 – Sal00m

回答

6

應該可以使用多表更新,如文檔中所述。

http://dev.mysql.com/doc/refman/5.5/en/update.html

UPDATE supply a INNER JOIN equipment b ON (a.IAR_NO= b.IAR_NO) 
SET a.IAR_NO = "9" , b.IAR_NO = "9" 
WHERE equipment.IAR_NO = 0 and supply.IAR_NO = 0; 

注:

如果要更新具有相同數據的兩個表,有可能是一個更好的方式來設計你的數據庫。請記住保留您的編程DRY

4

這些都是不依賴於對方(用於更新)兩個更新。如果他們需要做起來,做他們的交易

START TRANSACTION; 
UPDATE supply SET IAR_NO = 9 WHERE IAR_NO = 0; 
UPDATE equipment SET IAR_NO = 9 WHERE IAR_NO = 0; 
COMMIT; 

這種方式是更加明確了,我會說更優雅,因爲你可以看到什麼是真正更新,以什麼樣的價值。

+0

對於上述情況,如果您使用的是PHP,請查看mysqli_multi_query。 – MarcoZen