我正在寻找一种简单的方法来对表进行更新,只有当同一个表中没有其他列具有相同的值时才尝试更新,理想情况是在单个查询中。到目前为止,我收到了错误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
答案 0 :(得分:2)
在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;