SQL

在更新中使用子查询总是需要在where子句中使用子查询?

发布于 2021-05-10 21:14:56

这对我来说是一个常见的SQL查询:

update table1 set col1 = (select col1 from table2 where table1.ID = table2.ID)
where exists (select 1 from table2 where table1.ID = table2.ID)

有什么办法可以避免拥有两个几乎相同的子查询?该查询是一个明显的简化,但是性能会受到影响,并且查询的内容不必要地凌乱。

关注者
0
被浏览
118
1 个回答
  • 面试哥
    面试哥 2021-05-10
    为面试而生,有面试问题,就找面试哥。

    不幸的是,Informix不支持UPDATE语句中的FROM子句。解决方法,您将获得更好的结果(性能),方法是将UPDATE更改为MERGE语句。

    仅当您的数据库为11.50或更高版本时,此方法才有效

    MERGE INTO table1 as t1
    USING table2 as t2
       ON t1.ID = t2.ID
    WHEN MATCHED THEN UPDATE set (t1.col1, t1.col2) = (t2.col1, t2.col2);
    

    查看IBM
    Informix手册
    以获取更多信息



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看