我想通過檢查兩個連接表來更新列的狀態。即使我沒有得到一個錯誤。該柱未更新。我想採取一般blockplot id並查看是否有匹配和/或容器的事務。如果有交易但沒有容器,我需要將其標記爲P.mysql 3表加入更新
UPDATE (general
LEFT JOIN
transactions
ON
general.blockplotid=transactions.blockplotid)
LEFT JOIN
container
ON
general.blockplotid=container.blockplotid
SET general.lotstatus = 'P'
WHERE general.lotstatus != 'U' AND
transactions.id_transaction IS NOT NULL AND
container.id_container IS NULL
因此,總結一下,我有3個表格。我只想在一張桌子上更新一個柱子。我想檢查其他兩個表中的值,它們的值取決於設定值。這三個表與外鍵的主鍵連接。
當我做一個雙連接選擇語句。查詢似乎是正確的。
SELECT transactions.blockplotid AS blockplotid_2, container.blockplotid AS blockplotid_1, general.blockplotid, general.lotstatus, container.id_container, transactions.id_transaction
FROM ((general LEFT JOIN transactions ON general.blockplotid=transactions.blockplotid) LEFT JOIN container ON general.blockplotid=container.blockplotid)
ORDER BY general.blockplotid ASC
但是看起來好像更新的連接不像select。
該查詢似乎工作:
這個查詢工作:
UPDATE ((general LEFT JOIN transactions ON transactions.blockplotid=general.blockplotid) LEFT JOIN container ON container.blockplotid=general.blockplotid)
SET general.lotstatus='P'
WHERE general.blockplotid!='U' AND container.id_container is null AND transactions.id_transaction is not null
這裏的區別是的情況下IS NOT NULL,也WHERE條件的順序。 對此有任何解釋嗎?
如果刪除括號? – 2012-03-29 20:23:11
不更新任何行。不會返回任何錯誤。 – 2012-03-29 20:27:16
您確定有符合該條件的行嗎?如果將查詢從'update'更改爲'select * from'會怎樣? – 2012-03-29 20:30:49