sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres hvordan man implementerer beregnet kolonne med klausul

Hvis du ikke vil gentage udtrykket, kan du bruge en afledt tabel:

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

Dette vil ikke have nogen indflydelse på ydeevnen, det er blot syntaktisk sukker, der kræves af SQL-standarden.

Alternativt kan du omskrive ovenstående til et almindeligt tabeludtryk:

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

Hvilken man foretrækker er i høj grad en smagssag. CTE'er er optimeret på samme måde som afledte tabeller er, så den første kan være hurtigere, især hvis der er et indeks på udtrykket cos(id) + cos(id)



  1. Sådan opretter du en lagret procedure i SQL Server

  2. Rank funktion i MySQL

  3. KNIME

  4. Oracle Forskelle mellem NVL og Coalesce