MySQL 的 order by 選項按字串(而非數字)進行排序?


如果表中欄位是 varchar 資料型別,可以按如下語法進行排序 −

select yourColumnName FROM yourTableName ORDER BY yourColumnName +0 DESC;

為了理解上述語法,我們建立一個表。建立表的查詢如下 −

mysql> create table selectOrderdemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Name varchar(100),
   -> RankNumber varchar(100)
   -> );
Query OK, 0 rows affected (0.55 sec)

使用 insert 命令在表中插入一些記錄。查詢如下 −

mysql> insert into selectOrderdemo(Name,RankNumber) values('Larry',-100);
Query OK, 1 row affected (0.23 sec)
mysql> insert into selectOrderdemo(Name,RankNumber) values('John',50);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectOrderdemo(Name,RankNumber) values('Bob',0);
Query OK, 1 row affected (0.14 sec)
mysql> insert into selectOrderdemo(Name,RankNumber) values('Carol',-110);
Query OK, 1 row affected (0.23 sec)
mysql> insert into selectOrderdemo(Name,RankNumber) values('David',98);
Query OK, 1 row affected (0.21 sec

使用 select 語句從表中顯示所有記錄。查詢如下 −

mysql> select *from selectOrderdemo;

以下是輸出 −

+----+-------+------------+
| Id | Name  | RankNumber |
+----+-------+------------+
| 1  | Larry | -100       |
| 2  | John  | 50         |
| 3  | Bob   | 0          |
| 4  | Carol | -110       |
| 5  | David | 98         |
+----+-------+------------+
5 rows in set (0.00 sec)

以下是按數字順序選擇 order by 的查詢。

情況 1 − 如果要按降序排列,查詢如下 −

mysql> select RankNumber FROM selectOrderdemo ORDER BY RankNumber+0 DESC;

以下是輸出 −

+------------+
| RankNumber |
+------------+
| 98         |
| 50         |
| 0          |
| -100       |
| -110       |
+------------+
5 rows in set (0.00 sec)

情況 2 − 如果要按升序排列,查詢如下 −

mysql> select RankNumber FROM selectOrderdemo ORDER BY RankNumber+0;

以下是輸出 −

+------------+
| RankNumber |
+------------+
| -110       |
| -100       |
| 0          |
| 50         |
| 98         |
+------------+
5 rows in set (0.00 sec)

情況 3 − 如果要顯示所有列,請使用以下查詢 −

mysql> select * FROM selectOrderdemo ORDER BY RankNumber+0 DESC;

以下是輸出 −

+----+-------+------------+
| Id | Name  | RankNumber |
+----+-------+------------+
| 5  | David | 98         |
| 2  | John  | 50         |
| 3  | Bob   | 0          |
| 1  | Larry | -100       |
| 4  | Carol | -110       |
+----+-------+------------+
5 rows in set (0.00 sec)

更新日期:2019-07-30

166 次瀏覽

開啟您的事業

完成課程並獲得認證

開始
廣告