MySql 根据唯一条件插入或更新
将数据插入 MySQL 表中通常需要在执行更新之前检查数据是否已存在。然而,在处理唯一的非主键列时,传统的 UPDATE 语句就显得力不从心了。
在这种情况下,如果 datenum 列不存在,用户会寻求一种有效的方法将数据插入到 AggregateData 表中,或者更新现有行(如果存在)。
解决方案:INSERT ... ON DUPLICATE KEY UPDATE
根据 Jai 的建议,最合适的解决方案是使用 INSERT ... ON DUPLICATE KEY UPDATE 语法:
INSERT INTO AggregatedData (datenum,Timestamp) VALUES ("734152.979166667","2010-01-14 23:30:00.000") ON DUPLICATE KEY UPDATE Timestamp=VALUES(Timestamp)
如果 datenum 则此语句执行插入没有找到。如果确实存在,它将使用 VALUES() 函数中提供的值更新 Timestamp 列。
说明
VALUES() 函数确保用于更新的值与 INSERT 语句中指定的值相同。这可以防止意外的列值更新。
INSERT ... ON DUPLICATE KEY UPDATE的优点
以上是MySQL插入或更新:如何高效处理唯一非主键列?的详细内容。更多信息请关注PHP中文网其他相关文章!