Du skal bruge en form for INSERT...SELECT
forespørgsel.
Opdatering (efter afklaring): For eksempel, her er, hvordan du indsætter en række i t2
hvis en tilsvarende række ikke allerede findes i 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
For at indsætte flere rækker med den samme forespørgsel, er jeg bange for, at der ikke er noget bedre end
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
Oprindeligt svar
For eksempel vil dette tage other_column
fra alle rækker fra table1
der opfylder WHERE
klausul og indsæt rækker i table2
med værdierne brugt som column_name
. Det vil ignorere duplikerede nøglefejl.
INSERT IGNORE INTO table2 (column_name)
SELECT table1.other_column
FROM table1 WHERE table1.something == 'filter';