我正在寻找一种方法来更新表中的某些值,如果它们在左连接中使用的话。
我有两张桌子:
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>
答案 0 :(得分:1)
您不应该使用LEFT JOIN
,因为您只想更新table1
中table2
中匹配行的行。尝试:
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