PostgreSQL - 选择不存在特定列的表

时间:2016-06-02 16:22:51

标签: sql database postgresql select

我在PostgreSQL数据库中有一个包含大约3000个表的模式,所有表都有一行包含以下列:

idareausegeomsite_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;

1 个答案:

答案 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_idLIKE '%site_id%'会更合适。