我有一个数据库,其中有一个名为id
的PRIMARY KEY INTEGER AUTOINCREMENT列和一个条件标志列,将其称为condition
,它是一个INTEGER。
我希望能够选择给定数量的行N
,其中conditon=1
。这很容易查询(例如,如果N=10
):
SELECT data FROM table_name WHERE condition=1 LIMIT 10;
但是,我想保证我收到的行也是从id
的全部行集中取condition=1
的最小值的行。例如,如果id
在1到20之间的行有condition=1
,我希望查询能够保证返回id=1 - 10
的行。
我的理解是,ORDER BY
是在查询后完成的,因此我认为包括ORDER BY id
并不能保证这一点。有办法保证吗?
答案 0 :(得分:1)
你错了:
SELECT data FROM table_name WHERE condition=1 ORDER BY id LIMIT 10;
是您所需要的。
它将对所需的行进行排序,然后应用限制。
来自http://www.sqlitetutorial.net/sqlite-limit/
SQLite LIMIT和ORDER BY子句
我们通常将LIMIT子句与ORDER BY子句一起使用,因为 有兴趣以指定顺序获取行数,而不是以 未指定的顺序。
ORDER BY子句出现在SELECT中的LIMIT子句之前 声明。
SQLite在之前对结果集进行排序,以获取 LIMIT子句中指定的行。