gpt4 book ai didi

不存在的 SQL

转载 作者:行者123 更新时间:2023-12-02 06:56:58 24 4
gpt4 key购买 nike

我想我对 NOT EXISTS 的工作原理有误解,希望能向我澄清一下。

这是我正在运行的示例代码(也在 SQL Fiddle 上)

select sum(col1) col1, sum(col2) col1, sum(col3) col3
from (
select 1 col1, 1 col2, 1 col3
from dual tbl1
)
where not exists(
select 2 col1, 1 col2, 1 col3
from dual tbl2
)

我认为它应该返回:

1, 1, 1

但是它什么都不返回。

我做这个假设只是因为我虽然 NOT EXISTS 会给我一个列表,其中包含第一个查询中不存在于第二个查询中的所有行(在本例中为 1,1,1)

  1. 为什么这行不通
  2. 什么是使它按照我期望的方式工作的合适方法?

最佳答案

您正在 NOT EXISTS() 条件中执行不相关的子查询。它始终只返回一行,因此永远不会满足 NOT EXISTS 条件,并且您的查询返回零行。

Oracle 有一个行集差异运算符 MINUS,它应该可以满足您的需求:

select sum(col1) col1, sum(col2) col1, sum(col3) col3
from (
select 1 col1, 1 col2, 1 col3
from dual tbl1

MINUS

select 2 col1, 1 col2, 1 col3
from dual tbl2
)

SQL Server 有一个EXCEPT 运算符,它的作用与Oracle 的MINUS 相同。其他一些数据库实现其中一个或另一个。

关于不存在的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com