MySQL cho phép lọc kết quả SHOW COLUMNS bằng mệnh đề WHERE để ẩn các cột không cần thiết.
Cú pháp
SHOW COLUMNS FROM tên_bảng WHERE Field NOT IN ('cột1', 'cột2', ...);
Ví dụ minh họa
Tạo bảng demo 5 cột:
mysql> CREATE TABLE excludeCertainColumnsDemo (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(100),
-> StudentAge INT,
-> StudentMarks INT,
-> StudentAddress VARCHAR(200)
-> );
Query OK, 0 rows affected (0.50 sec)
Xem đầy đủ cấu trúc (DESC = SHOW COLUMNS):
mysql> DESC excludeCertainColumnsDemo;
+----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(100) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentMarks | int(11) | YES | | NULL | | | StudentAddress | varchar(200) | YES | | NULL | | +----------------+--------------+------+-----+---------+----------------+
Loại trừ cột StudentAge và StudentMarks:
mysql> SHOW COLUMNS FROM excludeCertainColumnsDemo
-> WHERE Field NOT IN ('StudentAge', 'StudentMarks');
+----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(100) | YES | | NULL | | | StudentAddress | varchar(200) | YES | | NULL | | +----------------+--------------+------+-----+---------+----------------+
Các điều kiện WHERE hữu ích khác
| Điều kiện | Ví dụ | Kết quả |
|---|---|---|
| Field LIKE 'pattern' | WHERE Field LIKE 'Student%' | Chỉ cột bắt đầu bằng Student |
| Type = 'int' | WHERE Type = 'int(11)' | Chỉ cột kiểu INT |
| Key = 'PRI' | WHERE Key = 'PRI' | Chỉ khóa chính |
| Extra LIKE '%auto%' | WHERE Extra LIKE '%auto_increment%' | Chỉ cột auto_increment |
Cách khác: Truy vấn INFORMATION_SCHEMA.COLUMNS
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'tên_db' AND TABLE_NAME = 'tên_bảng'
AND COLUMN_NAME NOT IN ('StudentAge', 'StudentMarks');
Cách này linh hoạt hơn, dễ tích hợp vào ứng dụng.