Sử dụng INFORMATION_SCHEMA.COLUMNS với COLUMN_NAME để tìm bảng chứa cột cụ thể.
Tạo bảng demo
mysql> create table DemoTable (
-> CustomerId int,
-> CustomerName varchar(20),
-> CustomerCountryName varchar(100)
-> );
Query OK, 0 rows affected (1.05 sec)
Truy vấn tìm bảng có cột "CustomerCountryName"
mysql> select * from information_schema.columns WHERE COLUMN_NAME = 'CustomerCountryName';
Kết quả - Cột xuất hiện trong 3 bảng
+---------------+--------------+--------------+---------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+--------------+------------+-------+---------------------------------+----------------+-----------------------+-------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME | COLUMN_TYPE | COLUMN_KEY | EXTRA | PRIVILEGES | COLUMN_COMMENT | GENERATION_EXPRESSION | SRS_ID | +---------------+--------------+--------------+---------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+--------------+------------+-------+---------------------------------+----------------+-----------------------+-------+ | def | sample | demotable189 | CustomerCountryName | 4 | NULL | YES | varchar | 100 | 300 | NULL | NULL | NULL | utf8 | utf8_general_ci | varchar(100) | | | select,insert,update,references | | NULL | NULL | | def | web | DemoTable | CustomerCountryName | 4 | NULL | YES | varchar | 20 | 60 | NULL | NULL | NULL | utf8 | utf8_unicode_ci | varchar(20) | | | select,insert,update,references | | NULL | NULL | | def | web | DemoTable | CustomerCountryName | 3 | NULL | YES | varchar | 100 | 300 | NULL | NULL | NULL | utf8 | utf8_unicode_ci | varchar(100) | | | select,insert,update,references | | NULL | NULL | +---------------+--------------+--------------+---------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+--------------+------------+-------+---------------------------------+----------------+-----------------------+-------+ 3 rows in set (0.68 sec)
Giải thích các cột quan trọng:
TABLE_SCHEMA: Tên database.TABLE_NAME: Tên bảng.ORDINAL_POSITION: Vị trí cột trong bảng (1-based).DATA_TYPE,COLUMN_TYPE: Kiểu dữ liệu.COLUMN_KEY: PRI (Primary Key), UNI (Unique), MUL (Index).
Truy vấn gọn gàng hơn:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'CustomerCountryName';