Mysql - 查找缺少列的表

问题描述 投票:0回答:1

我有各种模式,其中包含名为 c_alertaction 的表。在某些模式中,此表包含一个名为“creator”的列,但在其他模式中,此列缺失。

我可以很容易地看到左连接的运行状态(所有实例都有一个“oid”列):

select c1.table_schema, c1.table_name, c1.column_name, 
c2.table_schema, c2.table_name, c2.column_name
from information_schema.columns as c1
left join information_schema.columns as c2 on
    c1.table_schema = c2.table_schema
    and c1.table_name = c2.table_name
    and c2.column_name = 'creator'
where c1.table_name = 'c_alertaction'
and c1.column_name = 'oid';

但是,我确信我可以在没有左连接的情况下使用聚合函数来做到这一点,但到目前为止,我被难住了。

这是我的尝试:

select c.table_schema, count(*) as CreatorCount
from information_schema.columns as c
where c.table_name = 'c_alertaction'
and c.column_name = 'creator'
group by c.table_schema;

但这只会报告具有该列的架构。

有什么建议/线索/想法吗?

mysql aggregate-functions
1个回答
0
投票

参见示例

select c.table_schema
  ,sum(case when c.column_name = 'creator' then 1 else 0 end) as CreatorCount
from information_schema.columns as c
where c.table_name = 'c_alertaction'
group by c.table_schema;
© www.soinside.com 2019 - 2024. All rights reserved.