如果 mySQL 中的表中存在列名/字段名,则搜索数据库

Posted

技术标签:

【中文标题】如果 mySQL 中的表中存在列名/字段名,则搜索数据库【英文标题】:Search database if column name/field name exists in a table in mySQL 【发布时间】:2012-04-23 11:17:55 【问题描述】:

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

【问题讨论】:

How to find all the tables in MySQL with specific column names in them? 的可能重复项 【参考方案1】:

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

 SELECT DISTINCT TABLE_NAME 
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE COLUMN_NAME IN ('columnA','ColumnB')
            AND TABLE_SCHEMA='YourDatabase';

【讨论】:

【参考方案2】:
SHOW COLUMNS FROM tablename LIKE 'columnname'

玩得开心! :-)

更新:

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

【讨论】:

那只会搜索 1 个表而不是整个数据库。 嗯,好吧 - 如果某个列在某个表中,我确实理解了这个问题!【参考方案3】:

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

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'

【讨论】:

【参考方案4】:

使用 INFORMATION_SCHEMA 数据库及其表。

例如:

    SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'MY_DATABASE'
       AND column_name IN ( 'MY_COLUMN_NAME' );  

【讨论】:

以上是关于如果 mySQL 中的表中存在列名/字段名,则搜索数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何从Oracle数据库中的表中获取列名(字段名)列表?

如果 mysql 数据库中的表中不存在,则更新或插入多条记录

sql 如何判断表中的某个字段是不是有某个值

如何从 MySQL 数据库中搜索列名? [复制]

mysql 的表已经存在,但是我现在想添加一列 自动增长列

SQL查询字段名