我有SQL查詢的問題。我在這樣的表中的數據:MySQL獲取最大值(值)和第二高值
Name Value Other
Jim 301 v1
Jim 302 v1
Jim 303 v1
Mat 30 else
Mat 301 else
Mat 3091 else
和IM試圖讓名稱和max(值)列名和同名第二高值,這樣做,也是對單一選擇的所有名稱。任何人都知道如何做到這一點? 輸出示例:Mat,3091,301;吉姆,303302
我有SQL查詢的問題。我在這樣的表中的數據:MySQL獲取最大值(值)和第二高值
Name Value Other
Jim 301 v1
Jim 302 v1
Jim 303 v1
Mat 30 else
Mat 301 else
Mat 3091 else
和IM試圖讓名稱和max(值)列名和同名第二高值,這樣做,也是對單一選擇的所有名稱。任何人都知道如何做到這一點? 輸出示例:Mat,3091,301;吉姆,303302
爲每個名字MySQL頂部的兩個值中選擇行:
select t.*
from myTable t
where t.value >= (
select t1.value
from myTable t1
where t1.name = t.name
order by t1.value desc
limit 1 offset 1 -- second highest value
)
謝謝,這就是我要找的 – djdecks93
標準SQL的方式將使用rank()
:
select t.*
from (select t.*,
rank() over (partition by name order by value desc) as seqnum
from t
) t
where seqnum <= 2;
注:如果有聯繫,那麼這對於每名返回超過兩行。
標籤與正在使用的數據庫你的問題。 –
請在問題 –
@NikhilVC完成後添加預期結果,所以你有什麼想法? – djdecks93