Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

 

Sửa ngày:

62 Lượt xem

Đôi chút khó khăn khi sử dụng nhiều lệnh order by trong MySQL

MySQLSQL

Sử dụng nhiều lệnh order by trong MySQL

Cú pháp như sau

SELECT *
FROM tables
ORDER BY name1, name2
;

Đối với những người quen thuộc với MySQL, có thể cảm thấy điều này là chuyện hiển nhiên và có lẽ đã biết từ trước, nhưng với cách viết này thì có vẻ như dữ liệu được sắp xếp theo name2 trước, sau đó mới sắp xếp theo name1.

Kiểm tra log hoạt động

vagrant@homestead:~$ mysql -V
mysql  Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using  EditLine wrapper

mysql> create database sample;
Query OK, 1 row affected (0.00 sec)

mysql> use sample;
Database changed

mysql> create table users (id int, name1 varchar(10), name2 varchar(10));
Query OK, 0 rows affected (0.04 sec)
insert into users values 
(1, 'A', '1')
,(2, 'B', '1')
,(3, 'B', '1')
,(4, 'C', '1')
,(5, 'C', '2')
,(6, 'D', '1')
;
mysql> select *
    -> from users
    -> order by id;
+------+-------+-------+
| id   | name1 | name2 |
+------+-------+-------+
|    1 | A     | 1     |
|    2 | B     | 1     |
|    3 | B     | 1     |
|    4 | C     | 1     |
|    5 | C     | 2     |
|    6 | D     | 1     |
+------+-------+-------+
6 rows in set (0.00 sec)
mysql> select * from users order by name1, name2;
+------+-------+-------+
| id   | name1 | name2 |
+------+-------+-------+
|    1 | A     | 1     |
|    2 | B     | 1     |
|    3 | B     | 1     |
|    4 | C     | 1     |
|    5 | C     | 2     |
|    6 | D     | 1     |
+------+-------+-------+
6 rows in set (0.00 sec)

mysql> select * from users order by name2, name1;
+------+-------+-------+
| id   | name1 | name2 |
+------+-------+-------+
|    1 | A     | 1     |
|    2 | B     | 1     |
|    3 | B     | 1     |
|    4 | C     | 1     |
|    6 | D     | 1     |
|    5 | C     | 2     |
+------+-------+-------+
6 rows in set (0.00 sec)

Khác

Khi muốn sắp xếp theo thứ tự tăng dần hoặc giảm dần, hãy dùng kèm với ASC và DESC.

Muốn sắp xếp theo name1 tăng dần, nhưng muốn name2 giảm dần.

mysql> SELECT * FROM users ORDER BY name1 ASC, name2 DESC;
+------+-------+-------+
| id   | name1 | name2 |
+------+-------+-------+
|    1 | A     | 1     |
|    2 | B     | 1     |
|    3 | B     | 1     |
|    5 | C     | 2     |
|    4 | C     | 1     |
|    6 | D     | 1     |
+------+-------+-------+
6 rows in set (0.00 sec)

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic