Hoạt động một lần có thể đạt được với UPDATE
đơn giản :
UPDATE tbl
SET one_year_survival = (survival OR survival_days >= 365);
Tôi khuyên bạn không nên sử dụng chữ hoa camel, khoảng trắng và dấu ngoặc đơn trong tên của bạn. Mặc dù được cho phép giữa các dấu ngoặc kép, nó thường dẫn đến sự phức tạp và nhầm lẫn. Hãy xem xét chương về số nhận dạng và khóa từ trong sách hướng dẫn .
Bạn có biết rằng bạn có thể xuất kết quả của một truy vấn dưới dạng CSV với COPY
?
Ví dụ:
COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';
Bạn sẽ không cần cột thừa theo cách này để bắt đầu.
Câu trả lời bổ sung cho nhận xét
Để tránh cập nhật trống:
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)
...
Cá nhân tôi sẽ chỉ thêm các cột thừa như vậy nếu tôi có lý do thuyết phục. Bình thường thì tôi sẽ không. Nếu đó là về hiệu suất:bạn có biết về chỉ mục trên biểu thức và chỉ mục một phần không ?