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

Tìm tất cả bảng chứa cột A và cột B trong MySQL

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ần COUNT(DISTINCT column_name) = 2.

Mở rộng: Thêm AND table_schema = 'ten_db' để giới hạn database.