我有一个像这样的 SQL 表“Diag”:
| idDossier |身份证 |
| 2231070 | 2231070 1 |
| 2231070 | 2231070 2 |
| 2231070 | 2231070 3 |
| 2231070 | 2231070 4 |
| 1907043 | 5 |
| 1907043 | 6 |
| 1907043 | 7 |
我想为每个 IdDossier 提供最大的 Id,如下所示:
| idDossier |身份证 |
| 1907043 | 7 |
| 2231070 | 2231070 5 |
我设法在“BD Browser for SQLite”中完成此请求:
WITH cte AS
(SELECT idDossier, id, ROW_NUMBER() OVER (PARTITION BY idDossier ORDER BY id DESC) as rn FROM old_diagnostic)
SELECT * FROM cte
WHERE rn = 1
但不幸的是,“PARTITION BY”在 Room 中不起作用,我收到此错误:
android.database.sqlite.SQLiteException:靠近“(”:语法错误(Sqlite代码1 SQLITE_ERROR)
所以我想知道是否有类似这样的伪代码:
values = SELECT DISTINCT(idDossier) FROM Diag
foreach(x in values){
SELECT *, MAX(id) FROM Diag where idDossier = x
}
可能吗?如果没有,我怎样才能在不使用“PARTITION BY”的情况下实现这一目标? 谢谢你
使用此查询:
SELECT idDossier, MAX(id) as maxID FROM <TableName> GROUP BY idDossier
此外,您还可以使用原始查询。 原始查询的参考文档