Oracle SQL 开发人员如何获得最高价值
Oracle SQL Developer how to get top value
我按照从最大重复次数到最小重复次数的顺序排列列。但我只想获得最高价值。重复次数最多的值。
这是代码:
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"
您可以在 where 子句中使用 ROWNUM:
SELECT foreign_key
FROM
(
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
)
WHERE ROWNUM = 1;
您可以使用 ROWNUM
:
SELECT foreign_key FROM (
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
) WHERE rownum = 1;
这是最快的方法,但可能不适用于更复杂的查询。
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 版本。如果是最新的,那么这将起作用。这也是标准的,适用于其他一些数据库。
我按照从最大重复次数到最小重复次数的顺序排列列。但我只想获得最高价值。重复次数最多的值。
这是代码:
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"
您可以在 where 子句中使用 ROWNUM:
SELECT foreign_key
FROM
(
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
)
WHERE ROWNUM = 1;
您可以使用 ROWNUM
:
SELECT foreign_key FROM (
SELECT foreign_key
FROM all_person
GROUP BY foreign_key
ORDER BY COUNT(*) DESC
) WHERE rownum = 1;
这是最快的方法,但可能不适用于更复杂的查询。
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 版本。如果是最新的,那么这将起作用。这也是标准的,适用于其他一些数据库。