我从最大重复次序到最小重复次序。但我只想获得最高价值。重复次数最多的值。
这是代码:
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC;
这就是我得到的:
foreign_key
--------------
10
9
2
4
8
3
7
6
1
5
我只想获得值10(在此示例中)。 我看到很多时候人们使用LIMIT,但是如果我像这样使用LIMIT,我会得到错误:
ORDER BY COUNT(*) DESC LIMIT 1;
这是错误:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
答案 0 :(得分:2)
您可以在where子句中使用ROWNUM:
SELECT foreign_key
FROM
(
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
)
WHERE ROWNUM = 1;
答案 1 :(得分:2)
rownum
方法已经被描述过了,它的工作原理很正常。在Oracle 12+中,您可以使用fetch first 1 row only
:
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
FETCH FIRST 1 ROW ONLY;
您没有指定您正在使用的Oracle版本。如果是最新的,那么这将有效。这也是标准的,适用于其他一些数据库。
答案 2 :(得分:1)
您可以使用ROWNUM
:
SELECT foreign_key FROM (
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
) WHERE rownum = 1;
这是最快的方法,但可能无法用于更复杂的查询。