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

PostgreSQL създава нова колона със стойности, обусловени от други колони

Еднократната операция може да бъде постигната с обикновен UPDATE :

UPDATE tbl
SET    one_year_survival = (survival OR survival_days >= 365);

Бих те посъветвал да не използваш главни букви, бели интервали и скоби в имената си. Въпреки че е разрешено между двойни кавички, това често води до усложнения и объркване. Обърнете внимание на главата за идентификатори и ключ думи в ръководството .

Знаете ли, че можете да експортирате резултатите от заявка като CSV с COPY ?
Пример:

COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';

Като начало няма да имате нужда от излишната колона по този начин.

Допълнителен отговор към коментар

За да избегнете празни актуализации:

UPDATE tbl
SET    "Dead after 1-yr" = (dead AND my_survival_col < 365)
      ,"Dead after 2-yrs" = (dead AND my_survival_col < 730)
....
WHERE  "Dead after 1-yr" IS DISTINCT FROM (dead AND my_survival_col < 365)
   OR  "Dead after 2-yrs" IS DISTINCT FROM (dead AND my_survival_col < 730)
...

Лично аз бих добавил такива излишни колони само ако имах убедителна причина. Обикновено не бих го направил. Ако става дума за производителност:знаете ли за индекси на изрази и частични индекси ?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. използвайте \set променлива вътре в блока за деклариране на plpgsql

  2. Изпълнение на PostgreSQL CLI (psql) в bash скрипт без подкана за парола?

  3. Асоциациите в последователността не работят по предназначение

  4. Как да затворите пропуските в уязвимостите в PostgreSQL

  5. Колко голямо е твърде голямо за PostgreSQL таблица?