Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL chọn thứ tự bằng cách hoạt động giống như một chuỗi (không phải một số)?

Bạn có thể sử dụng cú pháp sau nếu cột của bạn có kiểu dữ liệu varchar -

select yourColumnName FROM yourTableName ORDER BY yourColumnName +0 DESC;

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

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)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

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

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from selectOrderdemo;

Đây là kết quả -

+----+-------+------------+
| 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)

Đây là truy vấn để chọn thứ tự theo thứ tự hoạt động giống như số.

Trường hợp 1 - Nếu bạn muốn kết quả theo thứ tự giảm dần, Truy vấn như sau -

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

Đây là kết quả -

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

Trường hợp 2 - Nếu bạn muốn kết quả theo thứ tự tăng dần, Truy vấn như sau -

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

Đây là kết quả -

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

Trường hợp 3 - Nếu bạn muốn có tất cả các cột, hãy sử dụng truy vấn bên dưới -

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

Đây là kết quả -

+----+-------+------------+
| 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)