【发布时间】:2014-06-29 11:21:44
【问题描述】:
以下查询适用于 Android 4.3.1 但不适用于 2.3.7 。后者的结果按nameA 而不是MAX(unix_time) 排序。看起来,ORDER BY 语句被完全忽略了。我假设 2.3.7 附带了一个较旧的 SQLite 版本,它不能让我的查询正确。有没有其他方法可以获得预期的结果?
String mQuery = "SELECT DISTINCT nameA FROM (
SELECT nameA, MAX(unix_time) FROM table GROUP BY nameA
UNION
SELECT nameB, MAX(unix_time) FROM table GROUP BY nameB
ORDER BY MAX(unix_time) DESC
) WHERE nameA <> ''";
编辑:根据 Notulysses 的回答更改了我的查询,现在可以正常工作了。
String mQuery = "SELECT nameA FROM (
SELECT nameA, MAX(unix_time) AS time FROM table WHERE nameA <> '' GROUP BY nameA
UNION
SELECT nameB, MAX(unix_time) AS time FROM table WHERE nameB <> '' GROUP BY nameB
) ORDER BY time DESC";
【问题讨论】:
-
啊,我之前读过,我不需要 DISTINCT 和 UNION。不知道为什么我保留了它。删除 DISTINCT 后,它在两个版本上都可以正常工作。非常感谢。
标签: android sql sqlite sql-order-by union