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';