Это похоже на самом деле основной запрос, который прекрасно работает на моем рабочем столе, но результаты не упорядочиваются при исполнении на Android:ORDER BY SUM() не работает на Android
SELECT column1, SUM(column2) AS column3
FROM ftdata WHERE ftdata MATCH 'column1:example'
GROUP BY column1
ORDER BY SUM(column2) DESC
LIMIT 8
Я также попытался оборачивая во внутренней таблице без толка:
SELECT * FROM(
SELECT column1, SUM(column2) AS column3
FROM ftdata WHERE ftdata MATCH 'column1:example'
GROUP BY column1) X
ORDER BY X.column3 DESC
LIMIT 8
Это код, я использую для выполнения запроса в случае, если она помогает:
Cursor c = mDb.rawQuery(sql, null);
if(c != null && c.moveToFirst()) {
do {
results.add(c.getString(0));
}
while(c.moveToNext());
}
c.close();
Я также должен уточнить, что ftdata
- это виртуальная таблица, используемая для запросов FTS. Его определение выглядит следующим образом:
CREATE VIRTUAL TABLE ftdata USING fts3(
column1,
column2 int)
Что 'results'? Как вы проверяете его заказ? –
'results' является' ArrayList '. Я проверяю его через отладчик, а также выводит его на экран. Я знаю, в каком порядке он должен быть, поскольку я сравниваю его с настольным набором данных. Я начинаю думать, что это потому, что 'freq' является столбцом' int' в моей таблице FTS и обрабатывает его как строку –
CodingIntrigue
В ваших запросах вы вообще не используете 'freq'. –