在我的数据库中,所有表都应具有一列(假设为“ abc”),我想找出没有此列的表。我们是否有任何此类查询可以满足此要求?
数据库:Db2 v11.1 LUW
答案 0 :(得分:1)
您可以针对SYSCAT.COLUMNS(和SYSCAT.TABLES)构建查询,以查找不具有该列的表:
select tabname from syscat.tables t1
where not exists
(select colname from syscat.columns c
where c.tabname=t1.tabname and colname='foo')
and tabname like 'SYSX%'
以上仅是示例,尚未优化。
答案 1 :(得分:0)
仅非系统表。除非您在创建表时故意将列名称指定为“ abc”(双引号),否则列名称必须为大写。
select tabschema, tabname
from syscat.tables t
where not exists
(
select 1
from syscat.columns c
where c.tabschema=t.tabschema and c.tabname=t.tabname
and c.colname='ABC'
)
and tabschema not like 'SYS%'
and type='T';