Android Room:如何循环查询结果?

问题描述 投票:0回答:1

我有一个像这样的 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”的情况下实现这一目标? 谢谢你

android sqlite kotlin android-room
1个回答
0
投票

使用此查询:

SELECT idDossier, MAX(id) as maxID FROM <TableName> GROUP BY idDossier

此外,您还可以使用原始查询。 原始查询的参考文档

© www.soinside.com 2019 - 2024. All rights reserved.