【发布时间】:2012-02-11 15:58:54
【问题描述】:
在 Android 中的所有 SQLite 版本(比如从 Android 1.6 起)中,这样的查询是否合法:
select _id, name, min(qty) min_qty, max(qty) max_qty
from my_table
group by name
请注意:仅按“名称”分组,而不是按“_id”分组。我注意到这确实有效。我只是想知道它是否有意地在任何 Android 版本和设备上工作。我需要这个查询来在我的 ListView 上显示最小和最大数量,但仍然有一个分组的行之一的 _id - 让我的 ListView 得到它。 希望清楚。
【问题讨论】:
-
SQLite 独立于 Android,查询对 SQLite(以及 MySQL)有效,但对其他数据库无效。 GROUP BY 子句在技术上是 ANSI,尽管这不是大多数数据库(Oracle、SQL Server、DB2 等)所支持的。我相信 PostgreSQL 9.2 开始支持“缺失列” GROUP BY...
-
好的,非常感谢。无论如何,我很乐意看到对此的其他确认。
-
补充一下 OMG 所说的,如果
name是唯一的,它可以正常工作。如果它不是唯一的,则返回与name相关的众多_id中的一个(或多或少随机)。因此,如果(如您所说)只想要一个(任何)_id分组的行之一,您可以使用它。 -
是的,我只需要组中项目的一个(任何)ID。谢谢两位。但是,我的实际查询更复杂,我按更多列分组。在这种情况下,名称可以出现在其他一些行中,但我假设我将获得的 id 将是列表中显示的该特定组中的 id 之一。
-
不,它不适用于所有 Android 版本,Android ICS 不支持
GROUP BY子句,请查看此答案:stackoverflow.com/questions/8837544/android-ics-sqlite-error
标签: android sql sqlite group-by