Bezpośrednio z instrukcji:
Lista wyrażeń wyjściowych po SELECT
może być pusty, tworząc tabelę wyników z zerową kolumną. Nie jest to poprawna składnia zgodnie ze standardem SQL. PostgreSQL pozwala na zachowanie spójności z dopuszczaniem tabel zerowych. Jednak pusta lista nie jest dozwolona, gdy DISTINCT
jest używany.
Możliwość tabel „zerokolumnowych” jest efektem ubocznym dziedziczenia tabel, jeśli się nie mylę. Były dyskusje na ten temat na listach dyskusyjnych Postgres (ale nie mogę ich teraz znaleźć)