Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

masukkan mysql jika nilai tidak ada di tabel lain

Anda perlu menggunakan beberapa jenis INSERT...SELECT kueri.

Pembaruan (setelah klarifikasi): Sebagai contoh, berikut adalah cara menyisipkan baris di t2 jika baris yang sesuai belum ada di 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

Untuk menyisipkan beberapa baris dengan kueri yang sama, sepertinya tidak ada yang lebih baik dari

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

Jawaban asli

Misalnya, ini akan mengambil other_column dari semua baris dari table1 yang memenuhi WHERE klausa dan masukkan baris ke dalam table2 dengan nilai yang digunakan sebagai column_name . Ini akan mengabaikan kesalahan kunci duplikat.

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. MySQL SEPERTI DI ()?

  2. CakePHP 1.3 - Kolom tidak diketahui di mana klausa

  3. PHP tidak melihat ekstensi mysql

  4. Memuat kelas `com.mysql.jdbc.Driver'. Ini sudah usang. Kelas driver baru adalah `com.mysql.cj.jdbc.Driver'

  5. Bagaimana memulihkan database MySQL dari file .myd, .myi, .frm