我正在寻找一种简单的方法来对表进行更新,除非该表中没有其他列具有我要更新的相同值,最好是在单个查询中。到目前为止,我遇到了错误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;

10-05 22:19