PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres как да внедрим изчислена колона с клауза

Ако не искате да повтаряте израза, можете да използвате производна таблица:

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

Това няма да окаже никакво влияние върху производителността, това е просто синтактична захар, изисквана от SQL стандарта.

Като алтернатива можете да пренапишете горното в израз на обща таблица:

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

Кое предпочитате е до голяма степен въпрос на вкус. CTE са оптимизирани по същия начин като производните таблици, така че първата може да е по-бърза, особено ако има индекс на израза cos(id) + cos(id)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавяне (натискане) и премахване от JSON масив в PostgreSQL 9.5+

  2. Как да променя database_url на heroku?

  3. Система за влизане, използваща физически потребители на postgres, а не логически потребители

  4. Ebean търси грешно име на последователност в Play Framework 2

  5. PostgreSQL замества функцията за HTML обекти