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

mysql chèn nếu giá trị không tồn tại trong bảng khác

Bạn cần sử dụng một số loại INSERT...SELECT truy vấn.

Cập nhật (sau khi làm rõ): Ví dụ:đây là cách chèn một hàng trong t2 nếu một hàng tương ứng chưa tồn tại trong t1 :

INSERT INTO t2 (v)
  SELECT temp.candidate
  FROM (SELECT 'test' AS candidate) temp
  LEFT JOIN t1 ON t1.v = temp.candidate
  WHERE t1.v IS NULL

Để chèn nhiều hàng với cùng một truy vấn, tôi e rằng không có gì tốt hơn

INSERT INTO t2 (v)
  SELECT temp.candidate
  FROM (
      SELECT 'test1' AS candidate
      UNION SELECT 'test2'
      UNION SELECT 'test3' -- etc
  ) temp
  LEFT JOIN t1 ON t1.v = temp.candidate
  WHERE t1.v IS NULL

Câu trả lời ban đầu

Ví dụ:điều này sẽ lấy other_column từ tất cả các hàng từ table1 thỏa mãn WHERE mệnh đề và chèn các hàng vào table2 với các giá trị được sử dụng dưới dạng column_name . Nó sẽ bỏ qua các lỗi chính trùng lặp.

INSERT IGNORE INTO table2 (column_name)
  SELECT table1.other_column
  FROM table1 WHERE table1.something == 'filter';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với Cơ sở dữ liệu MySQL trong .NET

  2. Phân tích cú pháp &So sánh dữ liệu bằng Coldfusion &MySQL

  3. MySQL LOAD_FILE trả về NULL

  4. Mysql:BẢNG RENAME NẾU TỒN TẠI

  5. Phạm vi số nguyên SQL khi tạo bảng