我在Android中查询SQLite数据库时遇到问题。我现在做的方式只有ORDER BY
,但它不起作用,只有排序功能。
Cursor cursor = DB.rawQuery("SELECT * FROM Userdetails ORDER BY ID DESC", null);
在此处输入图像描述
如何查询所有最相似的值在ID
列中?在这种情况下,1ABC
最多出现22次。
如果您不关心重复数的关系,那么在WHERE
子句中使用子查询:
SELECT *
FROM Userdetails
WHERE ID = (SELECT ID FROM Userdetails GROUP BY ID ORDER BY COUNT(*) DESC LIMIT 1);
请更清楚地说出你的问题和你想做什么。此外,这并不是一个真正与java相关的问题。然而,我重写了一个我在网上找到的解决方案,希望这能帮助
SELECT
*
FROM
yourDatabase
ORDER BY
COUNT(*) OVER (PARTITION BY ID) DESC;
1-您应该按ID分组并计算每个项目:
SELECT *, COUNT(*) AS count FROM Userdetails GROUP BY ID
2-然后给它一个名称,并使用其结果进行排序:
SELECT * FROM ( SELECT *, COUNT(*) AS count FROM Userdetails GROUP BY ID ) innerQuery
ORDER BY innerQuery.count DESC
在您的代码示例中:
Cursor cursor = DB.rawQuery("SELECT * FROM ( SELECT *, COUNT(*) AS count FROM Userdetails GROUP BY ID ) innerQuery ORDER BY innerQuery.count DESC", null);
我猜你真的不需要所有的列,所以不要使用"&";。此外,这可能会干扰COUNT
和DISTINCT
以满足您的需求。
因此,不要使用ORDER BY
,而是使用GROUP BY
来获取您需要的信息。您仍然需要ORDER BY
来按顺序获得列表,并添加LIMIT
来获得最大数量的重复项。
SELECT DISTINCT ID, COUNT(PROFILE) AS COUNT FROM USERDETAILS
GROUP BY ID
ORDER BY COUNT desc
LIMIT 1;