PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres, wie man eine berechnete Spalte mit Klausel implementiert

Wenn Sie den Ausdruck nicht wiederholen möchten, können Sie eine abgeleitete Tabelle verwenden:

select *
from (
   select id, cos(id) + cos(id) as op 
   from myTable 
) as t 
WHERE op > 1;

Dies hat keinen Einfluss auf die Leistung, es ist lediglich syntaktischer Zucker, der vom SQL-Standard gefordert wird.

Alternativ könnten Sie das Obige in einen allgemeinen Tabellenausdruck umschreiben:

with t as (
  select id, cos(id) + cos(id) as op 
  from myTable 
)
select *
from t 
where op > 1;

Welche man bevorzugt, ist weitgehend Geschmackssache. CTEs werden auf die gleiche Weise wie abgeleitete Tabellen optimiert, daher könnte die erste schneller sein, insbesondere wenn es einen Index für den Ausdruck cos(id) + cos(id) gibt