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

Bên TỪ của một CẬP NHẬT liên quan như thế nào đến bảng được nhắm mục tiêu cho CẬP NHẬT?

UPDATE truy vấn bạn hiển thị giống hệt như:

UPDATE fromemailaddress f
SET    call = true 
FROM  (
   SELECT fromemailaddress
   FROM   email 
   WHERE  subject ILIKE '%tester%'
   ) e
WHERE  e.fromemailaddress = f.fromemailaddress;

subject ILIKE '%tester%' tương đương nhanh hơn cho subject ~ 'tester' . Thông tin chi tiết về LIKE , ILIKE và đối sánh biểu thức chính quy (~ ) trong hướng dẫn sử dụng hoặc trong câu trả lời liên quan này trên dba.SE:

hiệu quả giống như:

UPDATE fromemailaddress f
SET    call = true
WHERE  EXISTS (
   SELECT 1
   FROM   email e
   WHERE  e.fromemailaddress = f.fromemailaddress
   AND    e.subject ILIKE '%tester%'
   );

Sử dụng cái này thay thế.

Nếu có nhiều hàng trong bảng email với cùng một fromemailaddress khớp với một hàng trong fromemailaddress , thì biểu mẫu này chỉ thực thi một cập nhật mỗi hàng, không giống như bản gốc đáng tiếc của bạn.

Đừng nhầm lẫn bởi thực tế là fromemailaddress được sử dụng làm cột và làm tên bảng ở đây.

Đọc kỹ hướng dẫn sử dụng tại đây tại đây . Cụ thể là bit này:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo dữ liệu và chất lượng phần cứng

  2. Các tiện ích mở rộng PostgreSQL yêu thích của tôi - Phần một

  3. Postgres + Hibernate + Java UUID

  4. Django + PostgreSQL:tạo cơ sở dữ liệu (cấp đặc quyền gì)

  5. Ánh xạ Chế độ xem SQL tới Thực thể jpa ngủ đông