SQL LIMIT关键字:确保包含特定结果
我需要编写一个SQL预取程序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
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
。@rbmSELECT*WHERE。。。限制。。。FROM…
充其量不是SQL语法。@user2154768是您需要两个选择和联合。您的id==x或id>=y
不能保证id==x
会被选中。这是可能的,但您的SQL构造完全不可靠。它将进入SELECT*FROM。。。哪里限制…
。另外,请标记您的数据库。@Anand,不,这不能保证包含id==x
。@rbmSELECT*WHERE。。。限制。。。FROM…
充其量不是SQL语法。@user2154768 Yes我看到了限制截断行的要点,因此您可以使用它来确保它不是截断。我看到了限制截断行的要点,因此您可以使用它来确保它不是截断。