按字母顺序排序并从android sqlite数据库中选择第一行

时间:2014-03-25 14:22:18

标签: android sqlite

我想按字母顺序对Android Sqlite中的数据进行排序,然后只选择每个字母表的第一行。例如如果结果集由Abc,Abd,Abe,Bbc,Bbd组成,我只想要Abc,Bbc。 是否可以使用SQL?

1 个答案:

答案 0 :(得分:1)

这适用于SQLite。

SELECT min(column_name)
FROM table_name
GROUP BY substr(column_name, 1, 1)

子串语法在其他系统上可能有所不同。它按第一个字符对数据进行分组,然后返回组中每个字符的字母最小值。

- 编辑(1/2)

如果您需要整行,最好使用上述查询的结果来查找整行。像这样:

SELECT table_name.*
FROM table_name 
 JOIN 
    (SELECT min(column_name) AS column_name
     FROM table_name
     GROUP BY substr(column_name, 1, 1)) sub_query
 ON table_name.column_name = sub_query.column_name
 GROUP BY column_name
 HAVING table_name.ROWID = min(table_name.ROWID)

- 编辑(2/2)

添加了最后两行(GROUP BY和HAVING)。他们需要避免重复。如果您有column_name的重复条目,则选择具有最低ROWID的条目。