我有各种模式,其中包含名为 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;
但这只会报告具有该列的架构。
有什么建议/线索/想法吗?
参见示例
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;