sql - 在 PostgreSQL 中查找非 NULL 的列

标签 sql postgresql information-schema

我为每个表分配了一个任务来计算可为空的列。简单:

 SELECT table_name, count(*) FROM INFORMATION_SCHEMA.COLUMNS
 WHERE is_nullable='NO'
 GROUP BY table_name;


现在我必须修改它以计算“具有属性“NOT NULL”的列”。以下代码会执行此操作还是仅检查天气列名称是否为空?

CREATE TEMP TABLE A AS 
SELECT DISTINCT column_name, table_name AS name FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL
GROUP BY table_name, column_name;

SELECT name, count(*) FROM A
GROUP BY name;

如果没有...有什么建议吗?

最佳答案

没有。

这个查询

SELECT DISTINCT column_name, table_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL

将返回在列“column_name”中具有值的所有行。

该表中的所有行将始终在“column_name”列中有一个值。

您是否只需要知道有多少列可以为空,有多少列不可为空?

SELECT is_nullable, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY is_nullable;

按表名统计?我认为你可以使用它。

SELECT table_name, is_nullable, count(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY table_name, is_nullable
ORDER BY table_name, is_nullable;

关于sql - 在 PostgreSQL 中查找非 NULL 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345380/

相关文章:

mySQL/Sequelize - 如何查询以获取字段为空数组的数据

MySQL 子查询有两个表 count 和 group by

java - hibernate : Not allowing cascaded delete because of Foreign key violations

java - jOOQ : compare uuid(from postgresql) and string(user id in class)

mysql - 如何从数据库表中找到相似的列名?

mysql - 如何访问MySql数据字典?

c# - SQL连接为什么会留下参数?

sql - 序列生成的主键似乎不能很好地与 select 语句配合使用

sql - Postgresql JSON 列检查键是否存在

SQL - 服务器上所有数据库的 INFORMATION_SCHEMA