Kai*_*ran 1 sql oracle not-exists where-clause oracle11g
我想我对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
)
Run Code Online (Sandbox Code Playgroud)
我认为它应该返回:
1, 1, 1
Run Code Online (Sandbox Code Playgroud)
但它没有返回任何东西.
我做这个假设只是因为我虽然不是EXISTS会给我一个第一个查询中第二个查询中不存在的所有行的列表(在本例中为1,1,1)
您正在执行不相关的子查询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
)
Run Code Online (Sandbox Code Playgroud)
SQL Server有一个EXCEPT与Oracle相同的运算符MINUS.其他一些数据库实现其中一个或另一个.
| 归档时间: |
|
| 查看次数: |
6263 次 |
| 最近记录: |