如果我有一个some_database
包含多个表的数据库,例如:
table_one
table_two
table_three
在哪里
table_one
拥有CPV_one
table_two
拥有CPV_two
table_three
拥有CPV_three
我需要找到所有具有类似列的表'%CPV%'
这可以通过sql查询来完成吗?我想避免一一检查所有表格。
您可以查询information_schema
以获取数据库中具有匹配列名的每个表的列表:
SELECT
TABLE_NAME, COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'SOME_DATABASE'
AND COLUMN_NAME LIKE '%CPV%'
编辑(仅选择TABLE_NAME
列)
正如评论中指出的那样,如果您只想选择表的名称(没有匹配的列列表),您还应该使用DISTINCT
关键字 - 否则将返回重复的行匹配的每一列的同一个表:
SELECT
DISTINCT TABLE_NAME
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'SOME_DATABASE'
AND COLUMN_NAME LIKE '%CPV%'
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '%CPV%'
AND TABLE_SCHEMA='YourDatabase';
查询 MySQL information_schema 怎么样?
SELECT TABLE_NAME
FROM information_schema.COLUMNS
WHERE COLUMN_NAME LIKE '%CPV%'