PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL tạo một cột mới với các giá trị được điều chỉnh trên các cột khác

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 ?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xóa cột không tồn tại

  2. Kết nối Pyspark với cơ sở dữ liệu Postgres trong máy tính xách tay ipython

  3. Tại sao pg_restore trả về các tùy chọn -d / - dbname và -f / - tệp không thể được sử dụng cùng nhau?

  4. Mô phỏng TẠO CƠ SỞ DỮ LIỆU NẾU KHÔNG TỒN TẠI cho PostgreSQL?

  5. Left-Outer Tham gia vào Postgres Không trả lại giá trị cho Null