Direkt aus dem Handbuch:
Die Liste der Ausgabeausdrücke nach SELECT
kann leer sein, was eine nullspaltige Ergebnistabelle erzeugt. Dies ist keine gültige Syntax gemäß dem SQL-Standard. PostgreSQL ermöglicht die Konsistenz mit dem Zulassen von Nullspaltentabellen. Eine leere Liste ist jedoch bei DISTINCT
nicht zulässig verwendet wird.
Die Möglichkeit von "Nullspalten"-Tabellen ist ein Nebeneffekt der Tabellenvererbung, wenn ich mich nicht irre. Es gab Diskussionen darüber auf den Postgres-Mailinglisten (aber ich kann sie gerade nicht finden)