【发布时间】:2021-01-20 12:19:55
【问题描述】:
我有一个这样的查询(事务)用于从表中获取项目。我有一个 confirmed = '1' 的 where 子句,但是当没有找到该子句的行时,我想回退到忽略该 where 子句。
如何在 MySQL 服务器中执行此操作?
START TRANSACTION;
SELECT @id := `id`,`item`
FROM `queue_items`
WHERE `processed_at` IS NULL AND `completed_at` IS NULL AND confirmed = '1' ORDER BY `id` ASC
LIMIT 1
FOR UPDATE;
UPDATE `queue_items` SET `processed_at` = @processedAt, `worker_id` = @workerId WHERE `id` = @id;
COMMIT;
【问题讨论】:
标签: mysql sql sql-update sql-order-by sql-limit