簡體   English   中英

MySQL按兩列排序

[英]MySQL sort by two columns

我有一張桌子。

id    name     data
1     DAN      xxxxxxxxx
2     ANTONY   xxxxxxxxx
3     DAN      xxxxxxxxx
4     DAN      xxxxxxxxx
5     JOSEPH   xxxxxxxxx
6     ANTONY   xxxxxxxxx
7     JOSEPH   xxxxxxxxx

我想先使用ID對表格進行排序,然后再按名稱分組。 例如。

7    JOSEPH  xxxxxxxxx
5    JOSEPH  xxxxxxxxx
6    ANTONY  xxxxxxxxx
2    ANTONY  xxxxxxxxx
4    DAN     xxxxxxxxx
3    DAN     xxxxxxxxx
1    DAN     xxxxxxxxx

我嘗試了ORDER BY的各種組合,也嘗試了ORDER BY FIELD,但無法獲得所需的結果

嘗試使用

select *, (select max(id) from tab t2 where t2.name = t1.name) m
from tab t1
order by m desc, id desc;

dbfiddle演示

您還可以使用窗口函數獲取每個名稱的最大ID,並將其用於訂購目的。

SELECT *,
        MAX(id) OVER(PARTITION BY name ORDER BY id DESC) Ord
FROM table t
ORDER BY Ord DESC

您可以按的order by使用子查詢,因此可以將其表示為:

select t.*
from t
order by (select max(id) from t t2 where t2.name = t.name) desc, id desc;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM