03/08/2018, 10:11

Bài 14: Sắp xếp kết quả với lệnh Order By trong MySQL

Khi sử dụng lệnh SELECT lấy dữ liệu thì theo mặc định nó sẽ sắp xếp kết quả từ cũ tới mới. Tuy nhiên bạn có thể thay đổi thứ tự sắp xếp ngược lại ...

Khi sử dụng lệnh SELECT lấy dữ liệu thì theo mặc định nó sẽ sắp xếp kết quả từ cũ tới mới. Tuy nhiên bạn có thể thay đổi thứ tự sắp xếp ngược lại theo dạng từ mới tới cũ, hay thậm chí là sắp xếp theo một column nào đó cũng được bằng cách sủ dụng lệnh ORDER BY.

1. Giới thiệu lệnh ORDER BY trong MySQL

Lệnh ORDER BY dùng chung với lệnh SELECT để sắp xếp kết quả trả về theo tiêu chí:

  • Kết quả sẽ tăng hoặc giảm dần
  • Có thể chọn một hoặc nhiều columns để sắp xếp

Sắp xếp theo 1 column

Cú pháp như sau:

SELECT field1, field2, ...
FROM table_name
WHERE ...
ORDER BY column_name sort_type<br><br><br>

Trong đó:

  • column_name là tên column cần sắp xếp
  • sort_type là loại sắp xếp và có giá trị là:
    • ASC nếu tăng dần
    • DESC nếu giảm dần

Ví dụ: Lấy danh sách sinh viên trong bảng SINHVIEN và kết quả trả về sắp xếp theo ID sinh viên và tăng dần

SELECT MaSV, TenSV, NamSinh
FROM SINHVIEN
ORDER BY MaSV ASC

Sắp xếp theo nhiều column

Cú pháp như sau:

SELECT field1, field2, ...
FROM table_name
WHERE ...
ORDER BY column_name1 sort_type1, column2 sort_type2, ...

Giải thích tương tự như trường hợp trên, nghĩa là column_name sẽ là tên column và sort_type sẽ là cách sort tăng (ASC) hoặc giảm (DESC).

Ví dụ: Lấy danh sách sinh viên trong bảng SINHVIEN và sắp xếp theo ID sinh viên là tăng dần và năm sinh giảm dần

SELECT MaSV, TenSV, NamSinh
FROM SINHVIEN
ORDER BY MaSV ASC, NamSinh DESC

2. Một số ví dụ khác về ORDER BY trong MySQL

Trước tiên bạn cần tạo database QLHS và tạo bảng SINHVIEN, sau đó thêm vào một số record như sau:

CREATE DATABASE QLHS;

USE QLHS;

CREATE TABLE SINHVIEN(
	MaSV INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	TenSV VARCHAR (255),
	NamSinh	INT(4)
) ENGINE = INNODB;

INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van A', '1990');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van B', '1991');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van C', '1980');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van D', '1976');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van E', '1990');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van F', '1954');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van G', '1967');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van H', '1978');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van I', '1991');
INSERT INTO SINHVIEN (TenSV, NamSinh) VALUES ('Nguyen Van K', '2000');

Ok bây giờ ta làm các ví dụ nhé.

Ví dụ 1: Lấy danh sách sinh viên sắp xếp theo ID và tăng dần
SELECT * FROM SINHVIEN ORDER BY MaSV ASC

Kết quả:

sap-xep-sinh-vien-tang-dan-mysql.png

Ví dụ 2: Lấy danh sách sinh viên có năm sinh bé hơn 1990 và sắp xếp theo Năm sinh tăng dần
SELECT * FROM SINHVIEN 
WHERE NamSinh < 1990
ORDER BY NamSinh ASC

Kết quả:

/namsinh-be-hon-1990-sap-xep-tang-dan.png

Ví dụ 3: Lấy danh sách sinh viên và sắp xếp tăng dần theo mã sinh viên và giảm dần theo năm sinh
SELECT * FROM SINHVIEN 
ORDER BY MaSV ASC, NamSinh DESC 

Kết quả:

/sap-xe-theo-nam-sinh-va-ma-sinh-vien.png

3. Lời kết

Vẫn còn một số cách sắp xếp ORDER BY nâng cao trong MySQL nữa như:

  • Sắp xếp theo biểu thức
  • Sắp xếp với hàm FIELD()

Nhưng mình không đề cập trong bài này vì sẽ rất khó cho những ban mới học MySQL. 

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

[BÀI 20] MỘT SỐ LỆNH CƠ BẢN TRONG MYSQL

Mở đầu: Để có thể truy vấn được cơ sở dữ liệu và tùy biến các truy vấn linh loạt, không phải lúc nào bạn cũng có thể dùng các chức năng xây dựng sẵn của xampp khi sử dụng mysql. Các truy vấn trong mysql cũng giống với truy vấn với các hệ quản trị cơ sở dữ liệu khác như SQLserver, … ...

Tạ Quốc Bảo viết 17:01 ngày 04/10/2018

Bài 06: Câu lệnh tạo bảng trong MySQL

1. Bảng (TABLE) là gì? TABLE là một cái bảng dùng để lưu trữ dữ liệu cho một LOẠI ĐỐI TƯỢNG cụ thể. TABLE gồm nhiều cột, và nhiều hàng. Trong đó: Mỗi hàng lưu trữ thông tin của một đối tượng. Mỗi cột là một thuộc tính của loại đối tượng đó. Dưới đây là một bảng SINHVIEN : ...

Trịnh Tiến Mạnh viết 16:38 ngày 01/10/2018

Cách sắp xếp kết quả với lệnh Order By trong MySQL

Tìm hiểu lệnh SELECT lấy dữ liệu trong MySQL Tìm hiểu WHERE IN – WHERE LIKE trong MySQL Giới hạn kết quả trả về với lệnh LIMIT trong MySQL Tìm hiểu phép tích đề cát trong MySQL Sắp xếp kết quả với lệnh Order By trong MySQL, tìm hiểu về order by với những ví dụ minh họa giúp bạn đọc ...

Hoàng Hải Đăng viết 17:23 ngày 04/09/2018

Gộp các kết quả với toán tử UNION trong MySQL

Tìm hiểu phép tích đề cát trong MySQL Cách sử dụng AS (Alias) trong MySQL Tìm hiểu Select trong khoảng với BETWEEN Tìm hiểu INNER JOIN trong MySQL Gộp kết quả với toán tử UNION trong MySQL với những ví dụ sử dụng toán tử UNION để truy vấn SELECT khác nhau trả về một danh sách kết quả ...

Bùi Văn Nam viết 17:22 ngày 04/09/2018

Sắp xếp thứ tự các phần tử mảng trong JavaScript

- Mặc định thì thứ tự của các phần tử trong mảng sẽ giống với thứ tự được sắp xếp lúc khai báo. - Tuy nhiên, với các phương thức xử lý mảng trong JavaScript, ta có thể sắp xếp lại thứ tự các phần tử cho mảng. 1) Sắp xếp theo thứ tự tăng dần trong từ điển - Phương thức sort() được dùng để ...

Bùi Văn Nam viết 11:13 ngày 18/08/2018
0