Rechtstreeks uit de handleiding:
De lijst met uitvoeruitdrukkingen na SELECT
kan leeg zijn, waardoor een resultatentabel met nul kolommen ontstaat. Dit is geen geldige syntaxis volgens de SQL-standaard. Met PostgreSQL kan het consistent zijn met het toestaan van tabellen met nul kolommen. Een lege lijst is echter niet toegestaan wanneer DISTINCT
wordt gebruikt.
De mogelijkheid van "nulkoloms"-tabellen is een neveneffect van de tabelovererving als ik me niet vergis. Er waren discussies hierover op de mailinglijsten van Postgres (maar ik kan ze nu niet vinden)