我正在尝试执行类似于Select the 3 most recent records where a column of values are distinct 的操作,但有一个计数,这意味着我需要保留该组。
使用相同的示例:
id time text otheridentifier
-------------------------------------------
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2
SELECT *, COUNT(*) FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3
将返回具有正确计数的 5、3、1 的 id,但我想要 5、4、2。
该帖子中的解决方案是
SELECT * FROM 'table' WHERE 'id' = (SELECT 'id'
FROM 'table' as 'alt'
WHERE 'alt'.'otheridentifier' = 'table'.'otheridentifier'
ORDER BY 'time' DESC
LIMIT 1) ORDER BY 'time' DESC LIMIT 3
但我不知道如何获取计数,因为我需要在那里进行分组:ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
如果我将 COUNT(*) 添加到开头,我会得到。