我有表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正在使用 –