我有一个存储多个模式的数据库,其中包含表格
我想获取每个模式名称,同时检查模式是否有一个名为“status”的表
我有两个问题:
此查询返回数据库的所有模式:
select schema_name from information_schema.schemata
使用返回的查询,然后检查每个模式,如果表'status'存在:
select exists(select * from information_schema.tables where table_schema = 'the_schema_name' and table_name = 'status')
我现在的问题是,我是否可以将这两个查询合并为一个?
提前致谢 Doobie
答案 0 :(得分:0)
使用共同相关的子查询:
select s.schema_name,
exists (select *
from information_schema.tables t
where t.table_schema = s.schema_name
and t.table_name = 'status') as status_exists
from information_schema.schemata s;
如果您只想查找表不存在的模式,可以使用以下查询执行此操作:
select s.schema_name
from information_schema.schemata s
where not exists (select *
from information_schema.table t
where t.schema_name = s.schema_name
and t.table_name = 'status');