如何在没有 _id 必要列的情况下在 sqlite 和游标中使用 distinct?

how to use distinct in sqlite and cursor without _id essential column?

我有一个 table 我应该使用这个查询来获得正确答案:

select distinct IDPAGE,TIT from contents where NUM=1;

并将此游标发送到 cursorAdapter。如您所知,此游标中应该有一个 _id 列。如果没有,则应用程序未启动。但我只想区分我的 tables 而不是 _id col。我想要这样的查询:

select rowid _id distinct IDPAGE,TIT from contents where NUM=1;

在 sql 中,我可以使用 DENSE_RANK() 但不能在 sqlite 中使用。请帮助我...

Android 框架要求在某些游标中有一个唯一的 _id 列,但该列必须仅在该特定结果集中是唯一的。 因此,如果您有一个列在您选择的结果中是唯一的,您也可以将它用作 _id 列:

SELECT IDPAGE AS _id, IDPAGE, TIT FROM ... WHERE ...;

(不需要 DISTINCT,因为唯一列永远不会重复。)

如果您没有单个唯一列,则还必须从 table 中获取 rowid(或任何命名的 INTEGER PRIMARY KEY 列)。要仍然获得其他列的不同值,您必须将 DISTINCT 替换为 GROUP BY:

SELECT MIN(rowid) AS _id, IDPAGE, TIT
FROM contents
WHERE NUM = 1
GROUP BY IDPAGE, TIT;