SQLite3按字段排序

SQLite3按字段排序,sql,sqlite,sql-order-by,Sql,Sqlite,Sql Order By,我有一个疑问: c.execute("SELECT WPNumber, ROUTE, WPID FROM rte WHERE ROUTE = ? AND (WPID = ? OR WPID = ?) LIMIT 3", (x[1], x[0], x[2]))) 查询可以工作,但我需要它首先返回WPID=x[0]的结果。换句话说,如果x[0]在表的后面,它仍然必须作为第一个结果返回 我有点胡闹了,我想按字段排序就行了。但是,我的SQL知识有限,无法使查询正常工作。我走对了吗?查询结果是什么样的?

我有一个疑问:

c.execute("SELECT WPNumber, ROUTE, WPID FROM rte WHERE ROUTE = ? AND (WPID = ? OR WPID = ?) LIMIT 3", (x[1], x[0], x[2])))
查询可以工作,但我需要它首先返回WPID=x[0]的结果。换句话说,如果x[0]在表的后面,它仍然必须作为第一个结果返回

我有点胡闹了,我想按字段排序就行了。但是,我的SQL知识有限,无法使查询正常工作。我走对了吗?查询结果是什么样的?

您能试试这个吗:


c、 执行从rte中选择WPNumber、ROUTE、WPID,其中ROUTE=?和WPID=?或者WPID=?按+X[0]+限制3,X[1],X[0],X[2]下单

Order by子句,最后为Order sequense e、 g


从rte中选择WPNumber、ROUTE、WPID,其中ROUTE=foo和WPID=11或WPID=22 ORDER BY 11、22 LIMIT 3要能够使用ORDER BY,您需要将两个ID值转换为保证第一个ID更小的值。 在一般情况下,这可以通过以下方式实现:


您的意思是WPID的值与结果集顶部的X[0]相同吗?是的,WPID=X[0]。无论其在表中的位置如何,都必须将其作为第一个结果返回。从rte中选择WPNumber、ROUTE、WPID,其中ROUTE=?和WPID=?或者WPID=?按+x[0],x[1],x[0],x[2]sqlite3限制3个顺序。操作错误:接近顺序:语法错误即使您重新排列了ORDER BY子句,使其处于正确位置,ORDER BY中的数字被解释为结果集列数字。我不知道您使用了哪种技术,但您应该按照我在ORDER BY子句中提到的那样编写查询。从rte中选择WPNumber、ROUTE、WPID,其中ROUTE=?和WPID=?或者WPID=?限制3 ORDER BY+x[0],x[1],x[0],x[2]给我:sqlite3.OperationalError:没有这样的列:WayPoint1您可以更新您的查询吗?您的查询应该是这样的:在SELECT*FROM rte中,您的查询应该是这样的,其中ROUTE=your ROUTE,WPID=CAST123作为整数或WPID=CAST456作为整数。限制3 ORDER BY子句之后应该是ORDER BY
c.execute("SELECT WPNumber, ROUTE, WPID" +
          " FROM rte" +
          " WHERE ROUTE = ? AND WPID IN (?, ?)" +
          " ORDER BY CASE WPID WHEN ? THEN 1 ELSE 2 END" +
          " LIMIT 3",
          (x[1], x[0], x[2], x[0]))