SQLite数据库中的SELECT行,其中条件满足,且返回的行具有最小ID

时间:2018-10-29 17:28:41

标签: sqlite

我有一个数据库,其中有一个名为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并不能保证这一点。有办法保证吗?

1 个答案:

答案 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子句中指定的行。