如何解决如何使用首选where子句以及后备来获取行?
我有一个类似的查询(事务),用于从表中获取项目。我有一个confirmed = '1'
的where子句,但是当该子句找不到任何行时,我想回退到忽略该where子句。
如何在MySQL Server中做到这一点?
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;
解决方法
您可以使用条件排序:
SELECT @id := `id`,`item`
FROM `queue_items`
WHERE `processed_at` IS NULL AND `completed_at` IS NULL
ORDER BY (confirmed = 1) DESC,`id`
LIMIT 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。