2015-06-08 71 views
0

我正在尋找一種方法來更新表中的某些值,如果它們用於左連接。左連接後更新行

我有兩個表:

table1: 
id | name | age | job 
1 | john | 31 | 
2 | eric | 25 | 

table2: 
id | job | inserted 
1 | lawyer | 0 
2 | dentist | 1 
3 | cop | 0 

然後我運行查詢:

UPDATE table1 
LEFT JOIN 
     table2 
ON  table1.id = table2.id 
SET  table1.job = `table2.job` 
WHERE table2.inserted = 0 

但我想更新從table2在更新中使用的行,以便它們插入= 1這有兩個原因1)加快連接,2)所以我可以檢查table2哪些行未被使用。 (在table2的刀片table1之前發生,但id S IN table2應該總是出現在table1如果所有cron作業運行正常。)

回答

1

你不應該使用LEFT JOIN,因爲你只需要更新的行在table2中有一個匹配行的table1。嘗試:

UPDATE table1 AS t1 
JOIN table2 AS t2 ON t1.id = t2.id 
SET t1.job = t2.job, t2.inserted = 1 
WHERE t2.inserted = 0 

DEMO