删一 发表于 2025-6-10 19:05:57

多表关联更新(mysql,oracle,postgreSQL)

每种数据库在实现多表更新和子查询优化方面的支持各不相同。以下是 Oracle、MySQL 和 PostgreSQL 中多表更新的一些主要差异和惯用写法:
1. Oracle


[*]MERGE 语句:Oracle 支持 MERGE INTO ... USING ... ON ... 语法,非常适合多表更新和条件更新。对于需要从其他表提取数据来更新主表的情况,这种方法非常有效。
[*]UPDATE + 子查询:可以在 SET 子句中使用子查询来获取每一行的更新值,但这种方法在性能上可能不如 MERGE 高效,特别是对于大数据量的更新。
示例:
sql复制代码MERGE INTO target_table t1 USING (SELECT ... FROM source_table) t2 ON (t1.id = t2.id) WHEN MATCHED THEN UPDATE SET t1.col1 = t2.col2; 2. MySQL


[*]UPDATE + JOIN:MySQL 不支持 MERGE,但可以通过 JOIN 在 UPDATE 中关联两个或多个表。这种方法通常是 MySQL 中多表更新的推荐方式,语法简单且性能较好。
[*]子查询:虽然可以使用子查询来更新,但性能和灵活性不如 JOIN 好,因为子查询在大数据量的情况下会导致性能下降。
示例:
sql复制代码UPDATE target_table t1 JOIN (SELECT ... FROM source_table) t2 ON t1.id = t2.id SET t1.col1 = t2.col2 WHERE ...; 3. PostgreSQL


[*]UPDATE ... FROM:PostgreSQL 支持直接在 UPDATE 中使用 FROM 子句进行多表更新。这种方式与 JOIN 类似,但允许指定更多的条件,并直接从其他表中获取更新值。
[*]子查询:与 MySQL 类似,子查询在 PostgreSQL 中可以用于更新,但通常不如 UPDATE ... FROM 的方式直观或高效。
示例:
sql复制代码UPDATE target_table t1 SET col1 = t2.col2 FROM source_table t2 WHERE t1.id = t2.id; 结论


[*]Oracle 推荐使用 MERGE 语句。
[*]MySQL 推荐使用 UPDATE ... JOIN。
[*]PostgreSQL 推荐使用 UPDATE ... FROM。
每种数据库的更新方式都有不同的优化和限制,因此在跨平台开发时,熟悉各自的差异并选择适合的写法会让代码更加高效和易于维护。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

晌集涟 发表于 2025-10-16 09:21:36

收藏一下   不知道什么时候能用到

盗衍 发表于 2025-10-21 12:25:09

前排留名,哈哈哈

哈梨尔 发表于 2025-12-5 22:41:33

用心讨论,共获提升!

玛凶 发表于 2025-12-26 11:34:02

前排留名,哈哈哈

蛟当罟 发表于 2026-1-15 19:04:40

谢谢楼主提供!

姚望舒 发表于 2026-1-19 23:22:28

过来提前占个楼

砂歹汤 发表于 2026-1-19 23:55:40

很好很强大我过来先占个楼 待编辑

喳谍 发表于 2026-1-20 07:48:07

前排留名,哈哈哈

伏滢 发表于 2026-1-20 13:51:46

懂技术并乐意极积无私分享的人越来越少。珍惜

准挝 发表于 2026-1-20 19:46:14

感谢,下载保存了

玻倌瞽 发表于 2026-1-21 09:09:13

感谢分享

套缈 发表于 2026-1-22 12:16:08

不错,里面软件多更新就更好了

公西颖初 发表于 2026-1-23 04:44:42

感谢分享,学习下。

闻人莹华 发表于 2026-1-24 04:51:54

感谢,下载保存了

莘度 发表于 2026-1-25 11:15:57

这个好,看起来很实用

寨重 发表于 2026-1-28 06:20:14

不错,里面软件多更新就更好了

乱蚣 发表于 2026-1-29 07:47:43

感谢分享,下载保存了,貌似很强大

命煦砌 发表于 2026-1-30 01:52:08

感谢分享,学习下。

柏雅云 发表于 2026-2-3 08:44:29

分享、互助 让互联网精神温暖你我
页: [1] 2
查看完整版本: 多表关联更新(mysql,oracle,postgreSQL)