我需要按照以下行编写一个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
编辑:提醒:限制在订购后应用。