Truy vấn INFORMATION_SCHEMA.COLUMNS để tìm bảng có đủ 2 cột chỉ định.
Ví dụ: Tìm bảng có cả cột 'Id' và 'Name'
mysql> SELECT TABLE_NAME AS TableNameFromWebDatabase
FROM information_schema.columns
WHERE column_name IN ('Id', 'Name')
GROUP BY table_name
HAVING COUNT(*) = 2;
Kết quả (12 bảng):
+--------------------------+ | TableNameFromWebDatabase | +--------------------------+ | student | | distinctdemo | | secondtable | | groupconcatenatedemo | | indemo | | ifnulldemo | | demotable211 | | demotable212 | | demotable223 | | demotable233 | | demotable251 | | demotable255 | +--------------------------+
Xác minh với bảng demotable233:
mysql> DESC demotable233;
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
Giải thích truy vấn:
WHERE column_name IN ('Id', 'Name'): lọc các hàng cột là Id hoặc Name.GROUP BY table_name: gom theo bảng.HAVING COUNT(*) = 2: bảng phải có cả 2 cột (mỗi cột 1 hàng). Nếu cột trùng tên trong cùng bảng (hiếm), cầnCOUNT(DISTINCT column_name) = 2.
Mở rộng: Thêm AND table_schema = 'ten_db' để giới hạn database.