如果我有这样的查询:
INSERT INTO map
SELECT 5, product_id FROM products WHERE price < 500 )
假设这尝试在地图表中插入300行。假设20个插入生成重复的键错误。是否会插入其他280行或整个查询是否会失败?
如果是这样,编写此查询的最佳方法是什么,以便插入非重复行并忽略重复项?
答案 0 :(得分:3)
查询将在第一个重复键时失败。如果你想继续插入下一个用途
INSERT IGNORE INTO map (map_id, product_id)
SELECT 5, product_id FROM products WHERE price < 500
如果插入多行,请不要将查询放入VALUES()
。