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

SQL LIMIT关键字:确保包含特定结果,sql,limit,Sql,Limit,我需要编写一个SQL预取程序 SELECT * WHERE id == x OR id >= y LIMIT 100 FROM ... 其中我需要包括结果id==x,而其他结果只是额外的。这可能吗?如果没有,我想如果id被排序,并且返回的结果是按顺序排列的,那么我仍然可以以保证包含id==x的方式进行查询。但这可能很棘手 编辑:所以答案(来自rbm)是: 注意:我可以有+-1个结果,如果需要包含id=x,请执行以下操作: select case when id = x then 1 el

我需要编写一个SQL预取程序

SELECT * WHERE id == x OR id >= y LIMIT 100 FROM ...
其中我需要包括结果id==x,而其他结果只是额外的。这可能吗?如果没有,我想如果id被排序,并且返回的结果是按顺序排列的,那么我仍然可以以保证包含id==x的方式进行查询。但这可能很棘手

编辑:所以答案(来自rbm)是:


注意:我可以有+-1个结果,如果需要包含id=x,请执行以下操作:

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

如果需要包含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

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

将其设置为SQL语法后,它将如下所示:

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

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

您需要两个选择和联合。您的
id==x或id>=y
不能保证
id==x
会被选中。这是可能的,但您的SQL构造完全不可靠。它将进入
SELECT*FROM。。。哪里限制…
。另外,请标记您的数据库。@Anand,不,这不能保证包含
id==x
。@rbm
SELECT*WHERE。。。限制。。。FROM…
充其量不是SQL语法。@user2154768是您需要两个选择和联合。您的
id==x或id>=y
不能保证
id==x
会被选中。这是可能的,但您的SQL构造完全不可靠。它将进入
SELECT*FROM。。。哪里限制…
。另外,请标记您的数据库。@Anand,不,这不能保证包含
id==x
。@rbm
SELECT*WHERE。。。限制。。。FROM…
充其量不是SQL语法。@user2154768 Yes我看到了限制截断行的要点,因此您可以使用它来确保它不是截断。我看到了限制截断行的要点,因此您可以使用它来确保它不是截断。