SQL LIMIT 关键字:确保包含特定结果



我需要按照以下行编写一个SQL预取器

SELECT * WHERE id == x OR id >= y LIMIT 100 FROM ...

我需要包含结果 id == x,而其他结果只是奖励。这可能吗?如果没有,我在想如果 id 被排序,并且返回的结果是按它们的顺序排列的,我仍然可以以一种保证包含 id == x 的方式进行查询。但可能会很棘手。

编辑:所以答案(来自 rbm(是这样的:

(SELECT * WHERE id == x)
UNION
(SELECT * WHERE id > y LIMIT 100) 

注意:没关系,我可能有+-1个结果

如果需要包含 id = x,请执行如下操作:

select case when id = x then 1 else 2 end sortOrder
etc
order by sortOrder

把它放在SQL语法之后,它看起来像:

SELECT *
FROM ...
WHERE id = x OR id >= y
ORDER BY CASE WHEN id = x THEN 0 ELSE 1 END ASC
LIMIT 100

编辑:提醒:限制在订购后应用。

最新更新