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