Я полагаю, что проблема может быть связана с точкой с запятой ;
в конце предложения IN.Это фактически отметит конец SQL и, как следствие, приведет к тому, что предложение ORDER будет проигнорировано / пропущено.
То есть try: -
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);
будетСортируйте строки, которые не имеют тип 1 или тип 2 , правильно, рассмотрите следующее (что копирует вашу ситуацию, но с дополнительными данными, чтобы показать результаты NOT IN): -
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
- Обратите внимание, что приведенное выше эффективно копирует ваш код
В результате получится: -
- оригинальное решение

, используя NOT IN правильно

оставляя точку с запятой в
