选择出现次数最多的所有行(如果不止一行,则全部显示)
Selecting all the rows with maximum occurance (if there is more than one, show them all)
我有一个 table 带有 empid 和 reviewid 的 emp:
CREATE TABLE 'emp' (
'empid' INT NOT NULL,
'reviewid' INT NULL,
PRIMARY KEY ('empid'));
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('1', '1');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('2', '1');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('3', '2');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('4', '2');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('5', '3');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('6', '4');
我想select出现次数最多的评论,更重要的是(我不知道怎么做的部分)是显示出现次数最多的所有行一个领带。所以在上面的例子中,结果应该是 reviewid 1 和 2(因为它们都出现了两次)。
-------------------------------------------------------
| reviewid |
| 1 |
| 2 |
-------------------------------------------------------
谢谢
可以试试...
SELECT reviewid FROM emp GROUP BY reviewid HAVING COUNT(*) =
(SELECT COUNT(*) FROM emp GROUP BY reviewid ORDER BY COUNT(*) DESC LIMIT 1)
使用聚合执行此操作会导致查询相当麻烦:
select reviewid, count(*)
from emp
group by reviewid
having count(*) = (select max(cnt)
from (select reviewid, count(*) as cnt
from emp
group by reviewid
) r
);
如果您需要详细信息,则可以加入原始行。
我有一个 table 带有 empid 和 reviewid 的 emp:
CREATE TABLE 'emp' (
'empid' INT NOT NULL,
'reviewid' INT NULL,
PRIMARY KEY ('empid'));
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('1', '1');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('2', '1');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('3', '2');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('4', '2');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('5', '3');
INSERT INTO 'emp' ('empid', 'reviewid') VALUES ('6', '4');
我想select出现次数最多的评论,更重要的是(我不知道怎么做的部分)是显示出现次数最多的所有行一个领带。所以在上面的例子中,结果应该是 reviewid 1 和 2(因为它们都出现了两次)。
-------------------------------------------------------
| reviewid |
| 1 |
| 2 |
-------------------------------------------------------
谢谢
可以试试...
SELECT reviewid FROM emp GROUP BY reviewid HAVING COUNT(*) =
(SELECT COUNT(*) FROM emp GROUP BY reviewid ORDER BY COUNT(*) DESC LIMIT 1)
使用聚合执行此操作会导致查询相当麻烦:
select reviewid, count(*)
from emp
group by reviewid
having count(*) = (select max(cnt)
from (select reviewid, count(*) as cnt
from emp
group by reviewid
) r
);
如果您需要详细信息,则可以加入原始行。