1. Mệnh đề ORDER BY trong MySQL với Python

Mệnh đề ORDER BY được sử dụng để sắp xếp các kết quả trả về theo chiều tăng dần hoặc giảm dần. Trong các câu lệnh chọn SELECT các giá trị được trả về và sắp xếp mặc định theo chiều tăng dần, đôi khi ta cần sắp xếp các giá trị đó theo chiều ngược lại (giảm dần).

Có 2 từ khóa trong mệnh đề ORDER BY đó là:

  1. ASC là việc sắp xếp tăng dần
  2. DESC là việc sắp xếp giảm dần

Ví dụ dưới đây, lấy ra các bản ghi có trong bảng “tbl_user” trong cơ sở dữ liệu “laptrinhtudau” và sắp xếp kết quả theo chiều tăng dần theo cột id trong bảng:

import mysql.connector
try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van lay ra tat ca ban ghi trong bang "tbl_user" sap xep tang dan
    sql = "SELECT * FROM tbl_user ORDER BY id ASC"

    # Thuc thi cau truy van 
    mycursor.execute(sql)
    # Lay ra ban ghi dau tien trong ket qua
    myresult = mycursor.fetchall()
    # Hien thi ket qua
    for x in myresult:
        print(x)
except:# Truong hop co loi khi lay ra ban ghi trong bang
    print("Khong the lay ra ban ghi trong bang!")

Kết quả:

(1, ‘Chu Minh Nam’, 20, ‘nam’)
(2, ‘Tran Ngoc Ha’, 20, ‘nu’)
(3, ‘Phung Thai Son’, 20, ‘nam’)
(4, ‘Nguyen Tri Thanh’, 19, ‘nam’)
(5, ‘Chu Quang Huy’, 18, ‘nam’)
(6, ‘Chu Thi Minh Anh’, 21, ‘nu’)
(7, ‘Nguyen Phuong Thao’, 21, ‘nu’)

Nếu như, bạn cần lấy ra các bản ghi trong bảng và sắp xếp kết quả theo chiều giảm dần – khi đó ta sẽ sử dụng mệnh đề ORDER BY với từ khóa DESC như sau:

import mysql.connector
try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van lay ra tat ca ban ghi trong bang "tbl_user" sap xep giam dan
    sql = "SELECT * FROM tbl_user ORDER BY id DESC"

    # Thuc thi cau truy van 
    mycursor.execute(sql)
    # Lay ra ban ghi dau tien trong ket qua
    myresult = mycursor.fetchall()
    # Hien thi ket qua
    for x in myresult:
        print(x)
except:# Truong hop co loi khi lay ra ban ghi trong bang
    print("Khong the lay ra ban ghi trong bang!")

Kết quả:

(7, ‘Nguyen Phuong Thao’, 21, ‘nu’)
(6, ‘Chu Thi Minh Anh’, 21, ‘nu’)
(5, ‘Chu Quang Huy’, 18, ‘nam’)
(4, ‘Nguyen Tri Thanh’, 19, ‘nam’)
(3, ‘Phung Thai Son’, 20, ‘nam’)
(2, ‘Tran Ngoc Ha’, 20, ‘nu’)
(1, ‘Chu Minh Nam’, 20, ‘nam’)

2. Mệnh đề WHERE kết hợp ORDER BY trong MySQL với Python

Chúng ta có thể sử dụng mệnh đề WHERE để lọc ra các bản ghi có điều kiện phù hợp, sau đó kết hợp với mệnh đề ORDER BY để sắp xếp các kết quả theo chiều tăng dần hoặc giảm dần.

Một ví dụ đơn giản dưới đây, chúng tôi sẽ chỉ lấy ra các bản ghi có điều kiện Tuoi = 20 và GioiTinh = ‘nam’ thuộc bảng “tbl_user” trong cơ sở dữ liệu “laptrinhtudau” sau đó sắp xếp các kết quả theo chiều giảm dần như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()
    
    # Truy van ban ghi Tuoi = 20 va GioiTinh = 'nam' va sap xep giam dan theo id trong bang "tbl_user"
    sql = "SELECT * FROM tbl_user WHERE Tuoi = 20 AND GioiTinh = 'nam' ORDER BY id DESC"

    # Thuc thi cau truy van 
    mycursor.execute(sql)
    # Chuyen doi cac ban ghi vua lay ra thanh mot LIST
    myresult = mycursor.fetchall()
    # Duyet LIST ket qua
    for x in myresult:
        print(x)
except:# Truong hop co loi khi lay ra ban ghi trong bang
    print("Khong the lay ra ban ghi trong bang!")

Kết quả:

(3, ‘Phung Thai Son’, 20, ‘nam’)
(1, ‘Chu Minh Nam’, 20, ‘nam’)