【问题标题】:Android SQLite group by - all columns?Android SQLite 分组 - 所有列?
【发布时间】: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


【解决方案1】:

根据 OMG Ponies 和 ypercube 的 cmets,我想我可以说这个问题得到了回答:是的,查询是有效的,并且返回的 _id 将是该组之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2016-11-28
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多