这个问题有些关于“最佳实践”,但也是一个潜在问题的搜索。我希望能够在多个字段上运行更新并分配不同的值,而无需运行多个查询并且不使用超级复杂查询。所以,我所做的是创建一个主键和“名称”列作为唯一键的表。插入重复密钥更新作为替代更新
现在,当我想用不同的值更新多列,我可以运行这样的查询:
INSERT INTO my_table (name, description) VALUES ('name', 'mydescription'), ('name2', 'description2') ON DUPLICATE KEY UPDATE description = VALUES(description)
这是一个坏主意?有一个更好的方法吗?标准警察是否会逮捕我?
编辑:我只是注意到一个潜在的问题,作为一个竞争条件。如果一个用户在另一个用户正在编辑它时删除了一行,并且他们保存了该信息,那么编辑将重新创建该行。 (这可以作为一个功能或一个错误。)
参见[性能问题::ON DUPLICATE密钥更新VS UPDATE(MySQL的)] -table
UPDATE
语法与表使用从UNION
物化常数(http://stackoverflow.com/questions/5036051/performance-问题上,重复键更新-VS-更新MySQL的)。 – eggyal这是一个类似的问题,但我更多地询问这是否允许。我并不担心在这种情况下的表现(我知道,我知道),因为该应用程序被包含并限制使用。但是有没有简单的选择?用'update'做这件事的唯一方法是使用'UPDATE'来处理一个有点难看的案例。 – teynon
它的工作原理非常简洁。看到我的答案下面的替代。 – eggyal