首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这可以用JOIN代替嵌套查询重写吗?

这可以用JOIN代替嵌套查询重写吗?
EN

Stack Overflow用户
提问于 2020-11-26 21:44:35
回答 1查看 32关注 0票数 0

我是sql的新手,通常我认为避免子查询更好,所以我想知道如何使用joins重写这一点……

代码语言:javascript
复制
SELECT ccn.*
FROM table1 AS  ccn 
WHERE ccn.col1 = '11'
AND ccn.col2  not in (SELECT table2.col4
                      FROM  table2)

问候

EN

回答 1

Stack Overflow用户

发布于 2020-11-26 21:46:45

我建议您使用NOT EXISTS编写本文

代码语言:javascript
复制
SELECT ccn.*
FROM table1 ccn 
WHERE ccn.col1 = '11' AND
      NOT EXISTS (SELECT 1
                  FROM table2 t2
                  WHERE t2.col4 = ccn.col2
                 );

这通常具有最好的性能--并且可能按照您希望的方式对待NULL值。

带过滤功能的LEFT JOIN在性能上非常相似:

代码语言:javascript
复制
SELECT ccn.*
FROM table1 ccn LEFT JOIN
     table2 t2
     ON t2.col4 = ccn.col2
WHERE ccn.col1 = '11' AND t2.col4 IS NULL;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65023255

复制
相关文章

相似问题

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