mysql的重复密钥更新。是否可以将INSERT语句中的值作为实体引用,而不是一次引用一个字段?
我还没有找到这样做的语法,我觉得令人沮丧的是,我没有看到任何明确表示它无法完成的东西,所以我一直在搜索 对于表“table_one”,以及一个唯一字段“table_one.a”(主键),是否可以执行以下操作:mysql的重复密钥更新。是否可以将INSERT语句中的值作为实体引用,而不是一次引用一个字段?,mysql,Mysql,我还没有找到这样做的语法,我觉得令人沮丧的是,我没有看到任何明确表示它无法完成的东西,所以我一直在搜索 对于表“table_one”,以及一个唯一字段“table_one.a”(主键),是否可以执行以下操作: INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE VALUES(); 我知道以下方法: INSERT INTO `table_one` (a,b,c,d
INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE VALUES();
我知道以下方法:
INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE `b` = '2', `c` = '3', `d` = '4', `e` = '5', `f` = '6', `g` = '7', `h` = '8';
及
我希望(如果不可能的话)有人能给我指一个解释原因的参考资料。这不可能,因为它违反了
更新
语法,所以你必须列出每一列。您可以考虑使用REPLACE-into
,但要小心,因为这实际上会删除该行并再次添加该行,因此可能会丢失一些值--它还会在DELETEs时触发外键。然而,这是一种不那么冗长的方式来做你想做的事。不
没有任何参考资料可以解释原因:根本没有语法允许您这样做。您可以将值与REPLACE-INTO一起使用,这就是为什么在重复密钥更新时无法使用值的原因。我会接受“现在是什么”,继续前行,肩膀上的重量会减轻一点。很好地提到了使用REPLACE-INTO的陷阱。我花了几个小时搜索关于这个问题的信息,对于错过这样一个类似的请求感到有点尴尬。
INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE `b` = 'VALUES(b)', `c` = 'VALUES(c)', `d` = 'VALUES(d)', `e` = 'VALUES(e)', `f` = 'VALUES(f)', `g` = 'VALUES(g)', `h` = 'VALUES(h)';