【问题标题】:sqlite sorting by WHERE firstsqlite 按 WHERE 首先排序
【发布时间】:2019-02-14 03:53:37
【问题描述】:

我正在尝试使用带有查询的 sqlite 对我的 android 应用程序中的一些数据进行排序

cursor c = db.query(TABLE_NAME, null, DRILL_TYPE + " IN ('type 1', 'type 2');", null, null, null, SIZE + " ASC", null);

我希望结果会按大小排序,无论钻头是 1 型还是 2 型,但我会先对所有类型 1 进行排序,然后再对所有类型 2 进行排序。导致此问题的查询有什么问题?

expected:
type 1     1
type 2     2
type 1     3
type 2     4
type 1     5
type 2     6

actual result:
type 1     1
type 1     3
type 1     5
type 2     2
type 2     4
type 2     6

在回答原始问题后编辑:-

在我使用 IN 时删除订单部分末尾的分号修复了问题,但在我使用 NOT IN 时却没有

【问题讨论】:

  • 我想你可以在there找到你的答案,祝你好运。

标签: android sql sqlite


【解决方案1】:

我认为问题可能是由于 IN 子句末尾的分号 ; 造成的。这将有效地标记 SQL 的结束,从而导致 ORDER 子句被忽略/省略。

那就试试吧:-

cursor c = db.query(TABLE_NAME, null, DRILL_TYPE + " IN ('type 1', 'type 2')", null, null, null, SIZE + " ASC", null);

关于:-

删除订单部分末尾的分号修复了以下问题 我使用 IN,但当我使用 NOT IN 时不使用

使用

 cursor c = db.query(TABLE_NAME, null, DRILL_TYPE + " NOT IN ('type 1', 'type 2')", null, null, null, SIZE + " ASC", null);

会对不具有 type 1type 2 的行进行正确排序,请考虑以下内容(它复制了您的情况,但有额外的数据来显示 NOT结果):-

DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (drill_type TEXT, size INTEGER);
INSERT INTO mytable VALUES
('type 2',4),('type 1',5),('type 2',6),
    ('type 1',1),('type 2',2),('type 1',3),
    ('type 4',14),('type 3',15),('type 4',16),
    ('type 3',11),('type 4',12),('type 3',13)
;

SELECT * FROM mytable WHERE drill_type IN ('type 1','type 2') ORDER BY size ASC;
SELECT * FROM mytable WHERE drill_type NOT IN ('type 1','type 2') ORDER BY size ASC;
SELECT * FROM mytable WHERE drill_type NOT IN ('type 1','type 2'); ORDER BY size ASC; -- will not sort as expected
  • 请注意,以上内容有效地复制了您的代码

结果将是:-

  1. 原解决方案

  1. 正确使用 NOT IN

  1. 中保留分号

【讨论】:

  • 成功了!这总是分号的错。但是,现在当我尝试使用 NOT IN 的语句时,我遇到了同样的问题
  • @vugavich 正确使用....., " NOT IN ('type 1', 'type 2')", ..... 会起作用。不可能知道你做错了什么,没有代码本身就无法工作。
猜你喜欢
  • 2016-11-03
  • 2023-03-05
  • 2013-06-29
  • 2014-01-18
  • 2013-08-29
  • 1970-01-01
  • 2019-06-17
  • 2012-12-15
  • 2023-03-13
相关资源
最近更新 更多