sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres hur man implementerar beräknad kolumn med klausul

Om du inte vill upprepa uttrycket kan du använda en härledd tabell:

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

Detta kommer inte att ha någon inverkan på prestandan, det är bara syntaktisk socker som krävs av SQL-standarden.

Alternativt kan du skriva om ovanstående till ett vanligt tabelluttryck:

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

Vilken du föredrar är till stor del en smaksak. CTE:er är optimerade på samma sätt som härledda tabeller är, så den första kan vara snabbare, särskilt om det finns ett index på uttrycket cos(id) + cos(id)



  1. Statisk vs dynamisk sql

  2. Oracle.DataAccess.Dll-laddningsproblem på x-64-dator

  3. Summa på vänster join SQL

  4. EF Core konfigurationsproblem med ägd typ som används i 2 olika klasser