sql >> Database >  >> RDS >> PostgreSQL

Postgres hoe berekende kolom met clausule te implementeren

Als u de uitdrukking niet wilt herhalen, kunt u een afgeleide tabel gebruiken:

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

Dit heeft geen invloed op de prestaties, het is slechts syntactische suiker vereist door de SQL-standaard.

Als alternatief kunt u het bovenstaande herschrijven naar een algemene tabeluitdrukking:

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

Welke je voorkeur heeft, is grotendeels een kwestie van smaak. CTE's worden op dezelfde manier geoptimaliseerd als afgeleide tabellen, dus de eerste kan sneller zijn, vooral als er een index is op de uitdrukking cos(id) + cos(id)



  1. Uitvoeringstijd van Postgres-query

  2. Elegantere SQL?

  3. java.sql.SQLEException:ORA-01843:geen geldige maand

  4. hoe een JSON-antwoord te bestellen op basis van databaserelatie met behulp van welsprekend