MySQL không đảm bảo thứ tự trả về nếu không có ORDER BY. Thứ tự phụ thuộc engine, index, lịch sử INSERT/DELETE. Luôn dùng ORDER BY rõ ràng.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (StudentName VARCHAR(100)); Query OK, 0 rows affected (0.82 sec)
mysql> INSERT INTO DemoTable VALUES('Sam'), ('Chris'), ('David'), ('Bob'), ('Robert');
Query OK, 5 rows affected (0.11 sec)
Kết quả không có ORDER BY (không xác định)
mysql> SELECT * FROM DemoTable;
+-------------+ | StudentName | +-------------+ | Sam | | Chris | | David | | Bob | | Robert | +-------------+ 5 rows in set (0.00 sec)
Sắp xếp tăng dần (ASC)
mysql> SELECT * FROM DemoTable ORDER BY StudentName ASC;
+-------------+ | StudentName | +-------------+ | Bob | | Chris | | David | | Robert | | Sam | +-------------+ 5 rows in set (0.00 sec)
Sắp xếp giảm dần (DESC)
mysql> SELECT * FROM DemoTable ORDER BY StudentName DESC;
+-------------+ | StudentName | +-------------+ | Sam | | Robert | | David | | Chris | | Bob | +-------------+ 5 rows in set (0.00 sec)
Best practice: Luôn chỉ định ORDER BY trong production, đặc biệt khi dùng LIMIT để phân trang.