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

Cập nhật MySQL với lựa chọn từ bảng khác

Bạn không muốn fylker trong UPDATE tuyên bố. Bạn cũng nên sử dụng một join thích hợp . Vì vậy, lần viết lại đầu tiên là:

UPDATE companies c JOIN
       kommuner k
       ON c.forretningsadresse_kommune = k.kommuneNavn
    SET c.forretningsadresse_fylke = (SELECT f.fylkeNavn 
                                      FROM fylker f
                                      WHERE f.fylkeID = k.fylkeID
                                     );

Nếu chúng ta giả sử một kết quả trùng khớp trong fylker , sau đó điều này là tốt. Nếu có nhiều kết quả phù hợp, thì bạn cần phải chọn một. Một phương pháp đơn giản là:

UPDATE companies c JOIN
       kommuner k
       ON c.forretningsadresse_kommune = k.kommuneNavn
    SET c.forretningsadresse_fylke = (SELECT f.fylkeNavn 
                                      FROM fylker f
                                      WHERE f.fylkeID = k.fylkeID
                                      LIMIT 1
                                     );

Lưu ý:Điều này sẽ cập nhật tất cả các công ty có "kommuner" phù hợp. Nếu không có "fylker" phù hợp, giá trị sẽ được đặt thành NULL . Tôi tin rằng đây là mục đích câu hỏi của bạn.

Ngoài ra, bí danh bảng giúp truy vấn dễ viết và dễ đọc hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để ping db MySQL và kết nối lại bằng PDO

  2. MySQL - Toán tử so sánh ÍT NHẤT và TUYỆT VỜI NHẤT

  3. Làm thế nào để tạm ngừng giao dịch hoạt động vào mùa xuân?

  4. Nâng cấp MySQL lên MariaDB 10 (Phần 2 - Nâng cấp MariaDB / MySQL 5.5 lên Phiên bản 10.0)

  5. Cách thay đổi khóa ngoại của bảng MySQL bằng dòng lệnh