19

如果mysql中的表中存在列名/字段名,有没有办法搜索数据库?

4

4 回答 4

21

使用 INFORMATION_SCHEMA 数据库及其表。

例如:

    SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'MY_DATABASE'
       AND column_name IN ( 'MY_COLUMN_NAME' );  
于 2012-04-11T06:38:21.330 回答
6
SHOW COLUMNS FROM tablename LIKE 'columnname'

玩得开心 !:-)

更新:

如评论中所述,这仅搜索一个表,而不是整个数据库(每个表)。在这种情况下,请参考 DhruvPathak 的回答。

于 2012-04-11T06:40:32.807 回答
6

如果您想在整个数据库中搜索,那么您应该尝试

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
AND COLUMN_NAME = 'column_name'

如果您想在特定表中搜索,那么您应该尝试

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
AND TABLE_NAME = 'table_name' 
AND COLUMN_NAME = 'column_name'
于 2012-04-11T06:48:22.133 回答
1

如果您想搜索两列或更多列,请使用下面提到的以下内容。

 SELECT DISTINCT TABLE_NAME 
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE COLUMN_NAME IN ('columnA','ColumnB')
            AND TABLE_SCHEMA='YourDatabase';
于 2015-01-09T12:20:20.927 回答