2012-03-11 103 views
1

我試圖用相同的值 - 預訂(tbl) - dropOffLocation和汽車(tbl) - currentbranch更新2個表中的字段。加入更新聲明

我可以得到2條update語句所期望的結果,如下面的:

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

不過,我想使用連接到2個更新語句合二爲一。 我試過下面的sql,但它沒有做任何事情。

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

有人可以幫助我修改聯接聲明以使其工作。

謝謝!

+0

看到這個問題 - http://stackoverflow.com/questions/4641970/how-do-i-combine-two-update-statements-in -one-mysql-query – Jody 2012-03-11 13:41:32

+0

通過說_isn't做任何事情_,以及PHP標記,我們懷疑你沒有錯誤檢查你的查詢執行。如果使用'mysql_query()',請在查詢失敗時'回顯mysql_error()'以查看錯誤。 – 2012-03-11 14:01:38

回答

3

您的語法有點不合適。在UPDATE SET子句內使用,代替AND。我沒有將這兩個表都放到WHERE子句中,而是在JOIN中添加了一個等效的ON子句,它更直觀,可以直接聲明表之間的關係。

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

+1。但我認爲更大的問題是,OP似乎沒有檢查SQL錯誤,因此語句無效的SQL語句「沒有做任何事情」。 – ruakh 2012-03-11 13:41:57

+0

@rukah很可能。 – 2012-03-11 14:00:23

+0

非常感謝,它現在正在工作 – Rob 2012-03-11 14:24:28

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'; 
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'