Giới thiệu
Câu lệnh SELECT ... LIMIT 0 trả về tập kết quả rỗng (Empty set) ngay lập tức, không quét dữ liệu. Có thể dùng để kiểm tra cấu trúc bảng, test syntax, hoặc làm placeholder trong code động.
Ví dụ thực hành
1. Tạo bảng DemoTable
mysql> CREATE TABLE DemoTable (Name VARCHAR(100));
2. Chèn dữ liệu
mysql> INSERT INTO DemoTable VALUES ('Chris'),('Sam'),('Robert'),('Mike');
3. Truy vấn LIMIT 0
mysql> SELECT * FROM DemoTable LIMIT 0;
Empty set (0.00 sec)
Ứng dụng thực tế
- Lấy metadata cột (tên, kiểu, null...) mà không đọc dữ liệu:
Ứng dụng driver (JDBC, ODBC, Python DB-API) dùng để lấySELECT * FROM DemoTable LIMIT 0;ResultSetMetaData. - Kiểm tra câu truy vấn hợp lệ (syntax, quyền truy cập) mà không tốn chi phí I/O.
- Template SQL động: Code sinh
SELECT ... LIMIT 0để lấy cấu trúc, sau đó thayLIMIT 0bằngLIMIT 100khi chạy thật. - Test WHERE/ORDER BY:
SELECT * FROM t WHERE complex_condition LIMIT 0— kiểm tra logic lọc không trả dữ liệu.
Lưu ý
LIMIT 0vẫn kiểm tra quyềnSELECTtrên bảng/cột.- Khác với
WHERE 1=0(cũng trả Empty set nhưng optimizer có thể vẫn scan index/statistics). EXPLAIN SELECT ... LIMIT 0hữu ích để xem plan không chạy.