MySQL 排序
MySQL 是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),提供了多種排序方法以滿足不同的查詢需求。本文將介紹一種特殊的排序方法,即將 10 排在 2 的后面。
默認(rèn)排序
在 MySQL 中,默認(rèn)的排序方式是按照字符編碼的順序進(jìn)行排序。對于數(shù)字類型的數(shù)據(jù),MySQL 會將其轉(zhuǎn)化為字符串進(jìn)行比較。因此,按照默認(rèn)排序方式排序 2 和 10 的順序?yàn)?10, 2。
注意事項(xiàng)
如果想讓 10 在 2 的后面,需要將該字段按照自定義排序方式進(jìn)行排序。需要注意的是,這種排序方式只適用于特定數(shù)據(jù)場景,因此需要評估自己的需求是否需要這種排序方式。
使用 case 的排序方式
使用 case 語句可以實(shí)現(xiàn)將 10 排在 2 的后面排序。具體做法是在排序語句中使用 case,將 10 替換成一個比任何數(shù)字都大的數(shù)字。
SELECT num FROM table_name ORDER BY CASE WHEN num = 10 THEN 999999 ELSE num END;
使用 CONCAT 的排序方式
使用 CONCAT 函數(shù)可以將數(shù)字類型的數(shù)據(jù)轉(zhuǎn)化為字符串類型的數(shù)據(jù),并在最前面添加一個固定長度的前綴。這樣就可以按照字符串編碼的順序進(jìn)行排序,實(shí)現(xiàn)將 10 排在 2 的后面排序。
SELECT num FROM table_name ORDER BY CONCAT(LPAD(num, 2, '0'), '~');
以上兩種排序方式都可以實(shí)現(xiàn)將 10 排在 2 的后面排序,具體選擇哪種方式要根據(jù)自己的數(shù)據(jù)場景來選擇。
上一篇mysql排序不對