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

How to query the most duplicate data column in SQLite Android

我在 Android 中查询 SQLite 数据库时遇到问题。我现在的做法只有ORDER BY,但是不行,只有排序功能

Cursor cursor = DB.rawQuery("SELECT * FROM Userdetails ORDER BY ID DESC", null);

enter image description here

如何查询ID列中所有最相似的值?在这种情况下 1ABC 最多出现所以它应该出现二十二次。

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

请更清楚地说明你的问题和你想做什么。此外,这实际上不是 java 相关的问题。但是,我重写了我 在网上找到的解决方案 ,希望这对您有所帮助

SELECT
    * 
FROM 
    yourDatabase
ORDER BY 
    COUNT(*) OVER (PARTITION BY ID) DESC; 

我猜您真的不需要所有列,所以不要使用“*”。此外,这可能会破坏 COUNTDISTINCT 以满足您的需求。

因此,请使用 GROUP BY 而不是 ORDER BY 来获取您需要的信息。您仍然需要 ORDER BY 来按顺序获取列表并添加 LIMIT 以获得最大数量的重复项。

SELECT DISTINCT ID, COUNT(PROFILE) AS COUNT FROM USERDETAILS
GROUP BY ID  
ORDER BY COUNT desc  
LIMIT 1;

如果您不关心重复次数的关系,则在 WHERE 子句中使用子查询:

SELECT * 
FROM Userdetails 
WHERE ID = (SELECT ID FROM Userdetails GROUP BY ID ORDER BY COUNT(*) DESC LIMIT 1);