mysql – 在主要数据库中有效的UPDATE语法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 在主要数据库中有效的UPDATE语法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1136字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 在主要数据库中有效的UPDATE语法](/upload/InfoBanner/zyjiaocheng/893/57488cf2f56c436e836cc132a47533ca.jpg)
我想根据另一个表(源)中的值更新表(目标).但我正在寻找一种可在4个主要数据库中运行的语法 – Oracle,MS SQL Server,PostgreSQL,MySQL.
到目前为止,我无法找到这样统一的语法.我是否错过了这样的语法或者确实没有这样的语法?
神谕
UPDATE target t
SET (t.col1, t.col2) = (SELECT s.col1, s.col2
FROM source s
WHERE s.key = t.key)
MS SQL Server / PostgreSQL
UPDATE target t
SET t.col1 = s.col1, t.col2 = s.col2
FROM source s
WHERE t.key=s.key
MySQL的
UPDATE target, source
SET t.col1=s.col1, t.col2=s.col2
WHERE s.key=t.key
解决方法:
这是低效的,但ANSI SQL标准的方法是:
UPDATE target
SET col1 = (SELECT s.col1
FROM source s
WHERE s.key = target.key),
col2 = (SELECT s.col2
FROM source s
WHERE s.key = target.key);
这并不意味着它将在每个RDBMS中起作用(例如,我认为它在Access中不起作用),但它确实在您列出的4个中有效.
我个人每周都会重视性能而不是可移植性,所以我不会使用这种语法.我倾向于使用一个存储过程,具有通用名称,但每个RDBMS的语法不同.
UPDATE
实际上,ANSI SQL标准也允许使用行值构造函数为Oracle显示的方法:
UPDATE target
SET (t.col1, t.col2) = (SELECT s.col1, s.col2
FROM source s
WHERE s.key = t.key);
不幸的是,如上所述,仅仅因为它符合ANSI标准,并不意味着它可以跨平台工作.
内容总结
以上是互联网集市为您收集整理的mysql – 在主要数据库中有效的UPDATE语法全部内容,希望文章能够帮你解决mysql – 在主要数据库中有效的UPDATE语法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。