如果我有一个数据库some_database
,其中包含多个表:
table_one
table_two
table_three
,其中
table_one
有CPV_one
table_two
有CPV_two
table_three
有CPV_three
我需要查找所有包含'%CPV%'
这可以通过sql查询来完成吗?我想避免逐一检查所有表格。
答案 0 :(得分:9)
您可以查询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%'
答案 1 :(得分:0)
这里有代码来获取具有所需条件的表名:
SELECT DISTINCT TABLE_NAME
FROM information_schema.Columns
WHERE COLUMN_NAME LIKE '%CPV%';
有关 INFORMATION SCHEMA
take a look here
COLUMNS
table here
答案 2 :(得分:0)
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '%CPV%'
AND TABLE_SCHEMA='YourDatabase';
答案 3 :(得分:0)
如何查询MySQL information_schema?
SELECT TABLE_NAME
FROM information_schema.COLUMNS
WHERE COLUMN_NAME LIKE '%CPV%'