使用join更新语句

时间:2012-03-11 13:37:07

标签: php mysql join

我正在尝试使用相同的值更新2个表中的字段 - 预订(tbl) - dropOffLocation和cars(tbl) - currentbranch。

我可以通过以下两个更新语句获得所需的结果:

UPDATE bookings b SET b.dropOffLocation = 'London' WHERE b.regNumber = 'AX03PFF'
UPDATE cars c SET c.currentBranch = 'London' WHERE c.regNumber = 'AX03PFF'

但是,我想使用JOIN将2个更新语句合并为一个。 我已经尝试过下面的sql,但它没有做任何事情。

UPDATE 
  bookings b JOIN cars c
SET 
  b.dropOffLocation = 'London' 
  AND c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP' AND c.regNumber = 'EP59YMP'

有人可以帮我修改join语句以使其正常工作。

谢谢!

3 个答案:

答案 0 :(得分:3)

你的语法有点偏。在,子句中使用AND代替UPDATE SET。我没有将两个表放入WHERE子句,而是在ON中添加了一个等效的JOIN子句,它更具可读性,因为它直接表示了表之间的关系。

UPDATE 
  bookings b JOIN cars c ON b.regNumber = c.regNumber
SET 
  b.dropOffLocation = 'London',
  c.currentBranch = 'London'
WHERE b.regNumber = 'EP59YMP'

答案 1 :(得分:0)

UPDATE 
bookings b JOIN cars c
on b.regNumber = c.regNumber

SET 
b.dropOffLocation = 'London', 
AND c.currentBranch = 'London',

WHERE b.regNumber = 'EP59YMP' AND c.regNumber = 'EP59YMP';

答案 2 :(得分:0)

试试这个:

UPDATE FROM bookings AS b
LEFT JOIN cars AS c ON c.regNumber = b.regNumber
SET b.dropOffLocation = 'London' AND c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP'