左连接

时间:2015-06-08 21:19:33

标签: mysql join

我正在寻找一种方法来更新表中的某些值,如果它们在左连接中使用的话。

我有两张桌子:

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中的table2应始终存在table1中,如果所有cron作业都运行正常。)< / p>

1 个答案:

答案 0 :(得分:1)

您不应该使用LEFT JOIN,因为您只想更新table1table2中匹配行的行。尝试:

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