如何在mysql中更新時使用連接?到目前爲止,我有這個...JOIN UPDATE mysql,無法正常工作
$q = $dbc -> prepare("UPDATE items i JOIN accounts a SET i.shrapnel = i.shrapnel-1000, a.gender = a.? WHERE id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
對此我很陌生,我做錯了什麼?
如何在mysql中更新時使用連接?到目前爲止,我有這個...JOIN UPDATE mysql,無法正常工作
$q = $dbc -> prepare("UPDATE items i JOIN accounts a SET i.shrapnel = i.shrapnel-1000, a.gender = a.? WHERE id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
對此我很陌生,我做錯了什麼?
這些工作提供了
items
和accounts
表您可以嘗試
$q = $dbc -> prepare("UPDATE items i JOIN accounts a USING (id) SET i.shrapnel = i.shrapnel-1000, a.gender = a.? WHERE i.id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
也
$q = $dbc -> prepare("UPDATE items i JOIN accounts a ON i.id = a.id SET i.shrapnel = i.shrapnel-1000, a.gender = a.? WHERE i.id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
也
$q = $dbc -> prepare("UPDATE items i NATURAL JOIN accounts a SET i.shrapnel = i.shrapnel-1000, a.gender = a.? WHERE i.id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
的ID所需要的表識別符。我也會使用「AS」。
$q = $dbc -> prepare("UPDATE items AS i JOIN accounts AS a SET i.shrapnel = i.shrapnel-1000, a.gender = a.? WHERE a.id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
可能需要一個連接ON什麼?:
$q = $dbc -> prepare("
UPDATE
items i JOIN accounts a ON (i.commonField = a.commonField)
SET
i.shrapnel = i.shrapnel-1000 ,
a.gender = a.?
WHERE
id = ? LIMIT 1");
$q -> execute(array($gender, $user['id']));
好會嘗試這一點,謝謝。在之前沒有遇到'USING'語法,我猜這是主鍵相同的情況? – cgweb87 2011-12-30 20:20:51
如果id字段在兩個表中並且它們是相同的數據類型,則USING(id)與'i.id = a.id'相同。如果是,那麼'USING(id)'起作用。 – RolandoMySQLDBA 2011-12-30 20:23:29