列存在于mysql表中

时间:2016-03-30 06:32:17

标签: mysql sql

我有大约60个表,有些表有列字段名uid。我有一个查询提供有关数据库和表信息模式的详细信息。我只想知道检查{{1列存在。这是一个查询

uid

这里检查一个表。如何检查所有表?

5 个答案:

答案 0 :(得分:1)

试试这个

SELECT T.TABLE_NAME,(CASE WHEN C.COLUMN_NAME IS NULL THEN 'NO' ELSE 'YES' END) Result 
    FROM INFORMATION_SCHEMA.TABLES T
        LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS C ON C.TABLE_NAME = T.TABLE_NAME 
AND C.COLUMN_NAME='uid'

它将列出所有带有结果列

的表

答案 1 :(得分:1)

TABLE_NAME列从哪里移动到选择:

SELECT t.table_name,
       max(CASE WHEN t.Column_name = 'uid' then 'Yes' else 'No' end) as YourInd
FROM  INFORMATION_SCHEMA.COLUMNS t
GROUP BY t.table_name

答案 2 :(得分:0)

符合您的要求:“我只想知道检查uid列存在多少个表”

SELECT count(TABLE_NAME) FROM INFORMATION_SCHEMA.COLUMNS 
WHERE column_name = 'uid'

为了满足您的第二个要求:“我只想要一个表的第一个名字和Exist的第二个列,其值为YES或NO”

SELECT t.table_name, if(c.column_name = 'Ref', 'yes', 'no') as exist 
FROM information_schema.COLUMNS c
left join information_schema.tables t
on t.TABLE_NAME = c.TABLE_NAME
group by c.TABLE_NAME

答案 3 :(得分:0)

我认为这样做会。

SELECT TABLE_NAME, CASE WHEN column_name = 'uid' THEN 1 ELSE 0 END AS 'EXISTS' FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME

答案 4 :(得分:0)

使用以下查询。

SELECT TABLE_NAME,
   CASE
       WHEN COLUMN_NAME = 'uid' THEN "YES"
       ELSE "NO"
   END AS 'EXISTS'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='<database_name>'
  AND COLUMN_NAME='uid'