同一个表

时间:2016-08-01 12:30:19

标签: mysql sql sql-update conditional

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

1 个答案:

答案 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;