示例表
id | parentId | desc | date
1 | null | .... | 1
2 | null | .... | 2
3 | 1 | .... | 3
4 | 1 | .... | 4
5 | 2 | .... | 5
6 | null | .... | 6
7 | null | .... | 7
好的,现在我想得到所有记录但是如果其中一些是通过id< - >连接的话parentId,那么我只想要一个有最新日期的那个。对上表的查询结果应为
id | parentId | desc | date
4 | 1 | .... | 4
5 | 2 | .... | 5
6 | null | .... | 6
7 | null | .... | 7
我怎样才能在sqllite中做到这一点?
答案 0 :(得分:0)
如果您有API级别16(Jelly Bean)或更高版本,则以下内容将起作用:
SELECT id,
parentId,
"desc",
MAX(date) AS date
FROM MyTable
GROUP BY COALESCE(parentId, id)
在较旧的Android版本中,您必须使用相关子查询来过滤掉较早日期的记录:
SELECT *
FROM MyTable
WHERE NOT EXISTS (SELECT 1
FROM MyTable AS T2
WHERE COALESCE(T2.parentId, T2.id ) =
COALESCE(MyTable.parentId, MyTable.id)
AND T2.date > MyTable.date)