【发布时间】:2012-08-24 10:41:34
【问题描述】:
我使用 PostgreSQL 9.1.2,我有一个基本表,如下所示,其中条目的生存状态为布尔值 (Survival) 和天数 (Survival(Days))。
我手动添加了一个名为1-yr Survival 的新列,现在我想为表中的每个条目填写此列的值,条件是该条目的Survival 和Survival (Days) 列值。完成后,数据库表将如下所示:
Survival Survival(Days) 1-yr Survival
---------- -------------- -------------
Dead 200 NO
Alive - YES
Dead 1200 YES
输入1-yr Survival 的条件值的伪代码类似于:
ALTER TABLE mytable ADD COLUMN "1-yr Survival" text
for each row
if ("Survival" = Dead & "Survival(Days)" < 365) then Update "1-yr Survival" = NO
else Update "1-yr Survival" = YES
end
我相信这是一个基本操作,但是我找不到执行它的 postgresql 语法。一些搜索结果返回“添加触发器”,但我不确定这是我需要的。我认为我在这里的情况要简单得多。任何帮助/建议将不胜感激。
【问题讨论】:
-
请更准确。你的 Postgres 版本?您是在谈论一次性操作还是持续努力?性能很重要吗?有什么理由要存储冗余数据而不是使用视图?
-
@ Erwin,对不起,我现在已将版本添加到问题中。我使用 PostgreSQL 9.1.2。这是一次性的工作,我想要存储冗余数据的原因是我以 .csv 格式导出数据库以在 R 或 Matlab 中使用,并且我希望 1 年生存信息能够轻松处理并作为附加信息提供在我运行算法之前列。我不知道意见,但也会调查。
-
我明白了。您可能会对我对
COPY的回答感兴趣。
标签: postgresql insert-update conditional-statements