SQL 重复判断机制分析
这段代码使用的是 MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 语法。它根据主键(Primary Key)或唯一索引(Unique Index) 来判断是否重复。
1. 判断逻辑详解
sql
INSERT INTO xxx表 (organization_id, prediction_date, prediction_weight, vehicle_number) VALUES (1, '2025-01-01', '100.5', 10), (2, '2025-01-01', '200.3', 20) ON DUPLICATE KEY UPDATE prediction_weight = VALUES(prediction_weight), vehicle_number = VALUES(vehicle_number)
当执行上述 SQL 时,MySQL 会:
尝试插入每条记录。
如果插入时触发了主键冲突或唯一索引冲突(即表中已经存在具有相同主键/唯一索引值的记录),则放弃插入,转而执行
UPDATE子句。具体更新
prediction_weight和vehicle_number为插入语句中提供的值。
2. 本例中具体的重复判断依据
从 SQL 语句可以推断,表 xxx中至少存在以下之一:
情况一:联合主键
sql
PRIMA