如何使用首选 where 子句获取行,但也有后备?
How to fetch rows with prefered where clause, but also with a fallback?
我有一个这样的查询(事务),用于从 table 中获取项目。我有一个 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;
您可以使用条件排序:
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
我有一个这样的查询(事务),用于从 table 中获取项目。我有一个 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;
您可以使用条件排序:
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