首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL与mySQL等效

mySQL与mySQL等效
EN

Stack Overflow用户
提问于 2014-02-27 16:23:05
回答 1查看 622关注 0票数 3

我正在将一个msSQL数据库移动到mySQL。在我的MS数据库中,我的存储过程使用"upsert“(update,如果@@rowcount = 0,插入)类型的东西。

我想在我的SQL中做同样的思考。我找到了几个选择

1)使用-在重复的键更新值(x、y、x)上插入xxxx。

2)替换为table_name (col_name,.)(价值.)

哪个更有效?我倾向于第二个,因为我会做很多更新,而不是插入。而且,我相信重复键上的insert会不断地碰撞auto_increment值,即使它最终是一个更新。

另一个注意事项:每个帐户记录将每晚更新。偶尔会插入一个新的帐户记录,但同样,主要是帐户将被更新。

还有其他[更好的选择]我忽略了吗?我在正确的轨道上吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-27 20:23:25

MySQL有几个这样的工具:

如果存在行,则REPLACE具有DELETE的效果,然后是INSERT。这意味着它不能对数据执行部分更新,任何未指定的字段都将恢复为默认值。

ON DUPLICATE KEY UPDATEINSERT上的一个选项,它可以处理密钥冲突,包括PRIMARY KEY上的冲突。如果找到一个副本,则执行您指定的UPDATE语句。

例如:

代码语言:javascript
复制
INSERT INTO people (id, name) VALUES (1, 'Jeremy')
  ON DUPLICATE KEY UPDATE name=VALUES(name)

您可以使用VALUES()INSERT中指定相同的值,而不必重复它。

重要的是要记住,NULL值可以复制,因为它们不存在,也不等效:NULL=NULL是假的。可以强制非NULL值为唯一值,也可以使用NOT NULL列来避免这种情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22074355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档