我有一个表,应该使用此查询获得正确答案:

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


并将此游标发送到cursorAdapter。如您所知,此光标中应为_id列。如果不是,则应用程序无法启动。但是我只想区分我的表而不是_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。)

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

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

09-15 12:54