如何在SQLite Android中查询最重复的数据列



我在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);

我猜你真的不需要所有的列,所以不要使用"&";。此外,这可能会干扰COUNTDISTINCT以满足您的需求。

因此,不要使用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;

最新更新