我正在寻找一种简单的方法来对表进行更新,除非该表中没有其他列具有我要更新的相同值,最好是在单个查询中。到目前为止,我遇到了错误You specify target table 't1' for update in FROM clause
。到目前为止,这是我尝试过的几种方法(仍然无法正常工作):
UPDATE emailQueue AS t1
SET
t1.lockedOn = 1470053240
WHERE
(SELECT
COUNT(*)
FROM
emailQueue AS t2
WHERE
t2.lockedOn = 1470053240) = 0
AND t1.lockedOn IS NULL
最佳答案
在MySQL中,您需要使用join
。在这种情况下,left join
是按顺序排列的:
UPDATE emailQueue eq LEFT JOIN
emailQueue eq2
ON eq2.lockedOn = 1470053240
SET eq.lockedOn = 1470053240
WHERE eq.lockedOn IS NULL AND
eq2.lockedOn IS NULL;