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

Truy vấn MySQL "void" (không trả về hàng) với LIMIT 0

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:
    SELECT * FROM DemoTable LIMIT 0;
    Ứng dụng driver (JDBC, ODBC, Python DB-API) dùng để lấy 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 đó thay LIMIT 0 bằng LIMIT 100 khi 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 0 vẫn kiểm tra quyền SELECT trê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 0 hữu ích để xem plan không chạy.