Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sắp xếp số nguyên nhưng giữ 0 ở cuối trong MySQL

Để sắp xếp cột số nguyên tăng dần nhưng đẩy các giá trị 0 về cuối, dùng ORDER BY column = 0, column.

Ví dụ minh họa

Tạo bảng và chèn dữ liệu có nhiều 0:

CREATE TABLE reorderIntegerExcept0 (value INT);

INSERT INTO reorderIntegerExcept0 VALUES (90), (10), (0), (40), (0), (50), (80), (0), (300);

Dữ liệu gốc:

+-------+
| value |
+-------+
| 90    |
| 10    |
| 0     |
| 40    |
| 0     |
| 50    |
| 80    |
| 0     |
| 300   |
+-------+

Sắp xếp tăng dần, 0 ở cuối:

SELECT * FROM reorderIntegerExcept0
ORDER BY value = 0, value;

Kết quả:

+-------+
| value |
+-------+
| 10    |
| 40    |
| 50    |
| 80    |
| 90    |
| 300   |
| 0     |
| 0     |
| 0     |
+-------+

Sắp xếp giảm dần, 0 vẫn ở cuối:

SELECT * FROM reorderIntegerExcept0
ORDER BY value = 0, value DESC;

Kết quả:

+-------+
| value |
+-------+
| 300   |
| 90    |
| 80    |
| 50    |
| 40    |
| 10    |
| 0     |
| 0     |
| 0     |
+-------+

Giải thích:

  • value = 0 là biểu thức boolean: trả về 1 (TRUE) nếu value = 0, ngược lại 0 (FALSE).
  • ORDER BY value = 0 sắp xếp FALSE (0) trước, TRUE (1) sau → các số ≠ 0 lên đầu, 0 xuống cuối.
  • Phụ kiện thứ 2 value (hoặc value DESC) sắp xếp bên trong mỗi nhóm.

Mở rộng: Để đẩy NULL về cuối: ORDER BY column IS NULL, column.