【问题标题】:MySQL Conditional Update in same table同一张表中的 MySQL 条件更新
【发布时间】:2016-12-06 12:58:14
【问题描述】:

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


【解决方案1】:

在 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;

【讨论】:

  • 我不确定我完全理解它是如何工作的,但它以某种方式工作。答案中的更多解释可能会有用:)
猜你喜欢
  • 2021-02-08
  • 2021-07-14
  • 1970-01-01
  • 2016-04-09
  • 2012-04-18
  • 2021-09-16
  • 2020-06-19
  • 1970-01-01
  • 2012-11-09
相关资源
最近更新 更多