我在PostgreSQL数据库中有一个包含大约3000个表的模式,所有表都有一行包含以下列:
id
,area
,use
,geom
,site_id
但是,我刚发现至少有一个表错过了列site_id
。我想知道是否还有更多......我如何查询没有列site_id
的表格?
我的以下想法并不奏效。有什么建议吗?
SELECT table_name
FROM information_schema.columns
WHERE table_schema = 'schema_A' AND column_name NOT LIKE 'site_id'
GROUP BY table_name;
答案 0 :(得分:3)
一种简单的方法是计算该表列表中side_id
出现的次数。如果总和为零,则表格没有site_id
:
SELECT table_name
FROM information_schema.columns
WHERE table_schema = 'schema_A'
GROUP BY table_name
HAVING SUM(CASE WHEN column_name LIKE 'site_id' THEN 1 ELSE 0 END) = 0;
我也不确定它是否有意,但LIKE 'site_id'
与= 'site_id'
具有相同的效果。如果您打算检查它是否包含site_id
,LIKE '%site_id%'
会更合适。