Is it possible to insert multiple rows while checking each new row against a condition? I know that you can run a simple insert into with multiple rows
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9)
AND
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9)
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c)
I am attempting to do something like this
INSERT INTO x_table(a,b,c)
SELECT VALUES(a),VALUES(b),VALUES(c)
FROM y_table
WHERE NOT EXISTS (SELECT * FROM x_table
WHERE a != VALUES(a)
AND b != VALUES(b))
Test Example (Tested and Working)
INSERT INTO `table` (id, timestamp, v1, v2, v3, v4, v5)
SELECT id, timestamp, v1, v2, v3, v4, v5
FROM (SELECT 6783 AS id, FROM_UNIXTIME('1580194194') AS timestamp, 1 AS v1, 0 AS v2, 1 AS v3, 0 AS v4, 45 AS v5
UNION ALL
SELECT 6845,FROM_UNIXTIME('1580194194'),1,0,1,0,107
UNION ALL
SELECT 6973,FROM_UNIXTIME('1580194194'),1,0,1,0,234
) y
WHERE NOT EXISTS (SELECT * FROM `table` x WHERE x.v1 = y.v1 AND x.v3 = y.v3 AND x.v5 = y.v5 ORDER BY TIMESTAMP DESC LIMIT 1)