我有大约60个表,有些表有列字段名uid
。我有一个查询提供有关数据库和表信息模式的详细信息。我只想知道检查{{1列存在。这是一个查询
uid
这里检查一个表。如何检查所有表?
答案 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'