2014-09-21 40 views
1

假設我有,其中有兩個字段,(我只是提出我的問題的前提下這裏)一張桌子和假設我將返回最大值爲的行數。如果我使用命令如何基於最大值在其列中的一個SQL返回多行

SELECT name, MAX(number) FROM tablename; 

但是,如果我有一個最大的數字兩個或兩個以上這樣的行,我是怎麼修改上面的查詢,以獲得所有的行?

編輯:我希望它返回所有可能找到最大值的行,而不只是其中一行,它應該正確地與正確的名稱相關聯。

回答

2

您使用where條款:

select t.* 
from tablename t 
where t.number = (select max(number) from tablename); 

查詢,順便說一下,只返回的最大數量。它返回可以來自任何行的name的任意值。

如果你想只有一個值,你應該使用:

select t.* 
from tablename 
order by number desc 
limit 1; 
+0

我希望它返回所有可能找到最大值的行,而不只是其中一行,它應該正確地與正確的名稱相關聯。 – SoulRayder 2014-09-21 14:15:18

+0

@SoulRayder。 。 。這是第一個查詢所做的。 – 2014-09-21 15:01:32

0

您需要通過條款,以與適當的名稱相關聯的最大數量使用一組。希望這對你有用。

select 
    name, max(number) 
from 
    yourtable 
group by 
    name 
+0

這將給出表中每個名字的最大值。 – lurker 2014-09-21 15:06:58

+0

這不是他要求的嗎?在問題編輯中看到「它應該正確地與正確的名字相關聯」的陳述。謝謝。 – Abhi 2014-09-21 15:09:19

+0

他希望所有名稱都具有最大值。不是所有名稱的最大值。這是完全不同的。 – lurker 2014-09-21 15:10:50

相關問題