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

Chèn các bản ghi bị thiếu từ bảng này sang bảng khác bằng cách sử dụng mysql

Cũng có thể sử dụng LEFT OUTER JOIN cho điều đó. Điều này sẽ tránh chi phí truy vấn con (khi hệ thống có thể thực thi truy vấn con một lần cho từng bản ghi của truy vấn bên ngoài) như trong câu trả lời của John Woo và sẽ tránh thực hiện công việc không cần thiết ghi đè 800 bản ghi đã tồn tại như trong bản ghi của người dùng2340435:

INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;

Điều này trước tiên sẽ chọn tất cả các hàng từ AB bảng bao gồm tất cả các cột từ cả hai bảng, nhưng đối với các hàng tồn tại trong A và không tồn tại trong B tất cả các cột cho B bảng sẽ là NULL .Sau đó, nó chỉ lọc các hàng sau như vậy (WHERE b.id IS NULL ), và cuối cùng nó chèn tất cả các hàng này vào B bả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. Lưu trữ hình ảnh vào cơ sở dữ liệu blob; truy xuất từ ​​db vào Hộp ảnh

  2. Loại bỏ hoặc cắt bớt một số ký tự đầu tiên hoặc cuối cùng trong cơ sở dữ liệu MySQL với SQL

  3. Truy vấn SQL hoạt động trong phpmyadmin nhưng không hoạt động trong php

  4. Mệnh đề SQL - WHERE với JOIN

  5. Tại sao truy vấn nhiều cột của tôi chậm hơn đáng kể so với các truy vấn cột đơn tương ứng, ngay cả với chỉ mục nhiều cột?