我有表USERS
和REPORTS
。在REPORTS
表中,我有一列user_id
,所以我可以計算用戶給出了多少報告。我想要做的是獲得報告數量最多的前10名用戶。在ORDER BY子句中使用SQL查詢
我想到了一個查詢:
SELECT
*
FROM
(SELECT users.id
FROM users
ORDER BY (SELECT count(*)
FROM reports
WHERE user_id = "users.id") DESC)
WHERE
ROWNUM <= 10;
但是,我不知道如何使用從主查詢到子查詢返回的ID。
我使用Oracle 11g。
後來編輯 我設法與GROUP結果排序:
SELECT * FROM(SELECT user_id, count(*) as count1 FROM reports GROUP BY
user_id ORDER BY count1 DESC) WHERE ROWNUM <= 10
我認爲在oracle中,LIMIT不起作用! :) – Daniel
對不起!我讀得太快了,讓我知道如果這是有效的 –
'先取第一個'只適用於Oracle 12,而不適用於舊版Oracle 11 Daniel正在使用 –