Tôi đã gán một bảng cho mỗi bảng để đếm các cột không có giá trị. Dễ dàng:Tìm các cột KHÔNG NULL trong PostgreSQL
SELECT table_name, count(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE is_nullable='NO'
GROUP BY table_name;
Bây giờ tôi phải thay đổi này để đếm "cột có tài sản 'NOT NULL'". Đoạn mã sau sẽ làm điều này hay nó sẽ chỉ kiểm tra tên cột thời tiết không phải là 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;
Nếu không ... Mọi lời khuyên?
Tôi nghĩ câu hỏi đặt ra là liệu cột có được đặt NOT NULL một cách rõ ràng hoặc nếu đó là khóa chính (không bao giờ có thể rỗng). Nếu vậy, có vẻ như COLUMNS không có thông tin đó. Có thể phải tìm kiếm thông qua cột def trong pg_attrdef cho NOT NULL. Nếu không, nó chỉ là restating truy vấn đầu tiên của bạn. –
Dường như COLUMNS có thông tin đó cho tôi. Khai báo một cột hoặc là 'NOT NULL PRIMARY KEY' hoặc đơn giản là' PRIMARY KEY' sets không thể 'NO'. Các cột được khai báo một cách rõ ràng NULL và các tập NULL được khai báo ngầm định là không thể trả về là 'CÓ'. –