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

Cập nhật một bảng MySQL với các giá trị từ một bảng khác

UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id

Điều đó nên làm được, và nó thực sự đang làm chính xác những gì của bạn. Tuy nhiên, tôi thích cú pháp 'JOIN' cho các phép nối hơn là nhiều điều kiện 'WHERE', tôi nghĩ nó dễ đọc hơn

Còn chạy chậm thì các bảng có kích thước bao nhiêu? Bạn nên có các chỉ mục trên tobeupdated.valueoriginal.value

CHỈNH SỬA:chúng tôi cũng có thể đơn giản hóa truy vấn

UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id

USING là viết tắt khi cả hai bảng của một phép nối có một khóa key được đặt tên giống hệt nhau chẳng hạn như id . tức là tham gia tương đương - http://en.wikipedia.org/ wiki / Join_ (SQL) # Equi-join



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' trong khi cố gắng cấp đặc quyền. Làm cách nào để cấp đặc quyền?

  2. Sử dụng câu lệnh IF trong truy vấn MySQL SELECT

  3. Giữ ngắt dòng khỏi TextArea khi ghi vào MySQL

  4. mysql SQL:mục cụ thể được xếp đầu tiên và sau đó sắp xếp phần còn lại của các mục

  5. Ví dụ về DATE () - MySQL