3

如果我有一个some_database包含多个表的数据库,例如:

table_one
table_two
table_three

在哪里

table_one拥有CPV_one

table_two拥有CPV_two

table_three拥有CPV_three

我需要找到所有具有类似列的表'%CPV%'

这可以通过sql查询来完成吗?我想避免一一检查所有表格。

4

4 回答 4

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%'
于 2012-10-03T14:09:44.137 回答
0

在这里,您可以获取具有所需条件的表名的代码:

SELECT DISTINCT TABLE_NAME
  FROM information_schema.Columns
 WHERE COLUMN_NAME LIKE '%CPV%';

有关查看的更多详细信息,请点击此处INFORMATION SCHEMA

这里的桌子COLUMNS

于 2012-10-03T14:09:43.757 回答
0
    SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME LIKE '%CPV%'
        AND TABLE_SCHEMA='YourDatabase';
于 2012-10-03T14:10:07.033 回答
0

查询 MySQL information_schema 怎么样?

SELECT TABLE_NAME
  FROM information_schema.COLUMNS
 WHERE COLUMN_NAME LIKE '%CPV%'
于 2012-10-03T14:11:48.623 回答