Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดึง 3 แถวสุดท้ายแล้วเรียง ID ขึ้น冇ด้วย Subquery และ LIMIT ใน MySQL

ใช้ Subquery: ดึง 3 แถวสุดท้ายด้วย ORDER BY ... DESC LIMIT 3 แล้วค่อยเรียงกลับ ASC ด้วย Outer query

สร้างตารางและเพิ่มข้อมูล 8 แถว

mysql> CREATE TABLE DemoTable (
    ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName VARCHAR(100)
);
mysql> INSERT INTO DemoTable(ClientName) VALUES
    ('Larry'), ('Chris'), ('Bob'), ('David'), ('Carol'), ('Robert'), ('Sam'), ('Mike');

ดูข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;
+----------+------------+
| ClientId | ClientName |
+----------+------------+
|        1 | Larry      |
|        2 | Chris      |
|        3 | Bob        |
|        4 | David      |
|        5 | Carol      |
|        6 | Robert     |
|        7 | Sam        |
|        8 | Mike       |
+----------+------------+

คำสั่ง: ดึง 3 แถวสุดท้าย (Id 6,7,8) แล้วเรียง Id ขึ้น冇

mysql> SELECT * FROM (
    ->     SELECT * FROM DemoTable
    ->     ORDER BY ClientId DESC
    ->     LIMIT 3
    -> ) tbl
    -> ORDER BY ClientId ASC;

ผลลัพธ์

+----------+------------+
| ClientId | ClientName |
+----------+------------+
|        6 | Robert     |
|        7 | Sam        |
|        8 | Mike       |
+----------+------------+

คำอธิบาย:

  1. Inner query: เรียง DESC (8,7,6,5...) จำกัด 3 แถว → ได้ Id 8,7,6
  2. Outer query: เรียง ASC → ได้ Id 6,7,8

MySQL 8.0+: ใช้ WITH cte AS (...) แทน Subquery ก็ได้