Du måste använda någon typ av INSERT...SELECT
fråga.
Uppdatering (efter förtydligande): Till exempel, här är hur du infogar en rad i t2
om en motsvarande rad inte redan finns 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
För att infoga flera rader med samma fråga, är jag rädd att det inte finns något bättre ä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
Ursprungligt svar
Detta kommer till exempel att ta other_column
från alla rader från table1
som uppfyller WHERE
sats och infoga rader i table2
med värdena som används som column_name
. Det kommer att ignorera dubbletter av nyckelfel.
INSERT IGNORE INTO table2 (column_name)
SELECT table1.other_column
FROM table1 WHERE table1.something == 'filter';