2016-03-07 33 views
-1

假設我有一個包含三列的表:ID,名稱和用戶。如何執行此查詢以選擇具有最高編號的N行col :)

我想選擇用戶數量最多的3行,我希望行按名稱升序排序。我如何實現這一目標?

我用

select Name from TABLE where ID IN (select ID from Tablesorder by Users desc limit 3) 

但在/ ANY不被支持。任何其他方式? 謝謝

+0

SQL的哪個版本? –

+2

你正在使用哪個數據庫 – FallAndLearn

+0

我的意思是說mysql ..謝謝你的回答 – Snake

回答

1

當允許子查詢時,您可以使用它。 它爲列用戶提取最高值的3條記錄。這3個結果將在外部查詢中進行排序。

select Name from 
(
    select Name 
    from Tables 
    order by Users desc 
    limit 3 
) as temp 
ORDER BY Name ASC 
+0

不用寫ASC。其默認情況下ORDER BY – FallAndLearn

+1

沒有必要,但它會更清楚的OP雖然。 – Johan

1

在MySQL:

SELECT id, name, users 
FROM (SELECT id,name,users FROM tablename ORDER BY users DESC LIMIT 3) as a 
ORDER BY name; 

在SQL Server

SELECT id, name, users 
FROM (SELECT TOP 3 id,name,users FROM tablename ORDER BY users DESC) as a 
ORDER BY name; 

在Oracle

SELECT id, name, users 
FROM (SELECT id,name,users FROM tablename ORDER BY users DESC) as a 
WHERE ROWNUM<=3 
ORDER BY name; 
+0

OP的示例查詢包含'LIMIT 3'。我認爲Oracle和SqlServer的例子沒有必要。 – Johan