关于如何使用存在和不存在的 PL/SQL 查询的问题
Posted
技术标签:
【中文标题】关于如何使用存在和不存在的 PL/SQL 查询的问题【英文标题】:Issue with PL/SQL Query of how to use exists and not exists 【发布时间】:2013-03-19 17:33:55 【问题描述】:我有一张包含位置详细信息的表格:-
Location id Manager Name SubFunction
1 HR XYZ direct sales
2 IT ABC Gaming
3 HR DEC Agent
Location id Lookupcode
1 123
2 126
3 231
4 222
子函数表详细信息:-
Lookup code Subfunction
123 Agent
126 Gaming
222 Customer services
基本上,我有两张表,其中一张的位置定义了函数、子函数 另一个带有子功能表的子功能表,其子功能名称用于位置表。
现在我必须编写一个 PL/SQL 查询,以便将位置表中不存在的所有函数显示为仅将管理器作为“HR”。我尝试了以下查询:-
select Subfuntion
from subfunction_table
where exists //Part a
(select null
from subfunction_table
)
and not exists
(select null // Partb
from
location
where manger='HR')
例如:- 在子功能表中的上表中有“客户服务”,它在子功能表中但不在位置中,因此查询应显示子功能“客户服务”
但我没有得到关于如何使用从 Part a 到 Part b 的子函数名称的逻辑
【问题讨论】:
那么,您使用的是 SQL Server,但语言是 PLSQL 而不是 T-SQL? 标签错误..我更正了..我正在使用 sql developer “不在位置”表中的函数从何而来? 函数和子子函数表被单独定义为子函数..但它不是必需的所以我没有提到 Location 和 Subfunction_table 是否在数字键location.SubFunction=Subfunction_table.Lookup
上连接?
【参考方案1】:
SELECT *
FROM subfunction sf
WHERE NOT EXISTS (SELECT 1
FROM function f JOIN location l USING (locationid)
WHERE l.manager = 'HR');
这就是你要找的东西?这是我从你的问题中了解到的。
【讨论】:
以上是关于关于如何使用存在和不存在的 PL/SQL 查询的问题的主要内容,如果未能解决你的问题,请参考以下文章
在pl/sql中怎么查询所有存在的表,以及怎么样获得未知表中的某一字段
如何根据 PL/SQL 变量值检查输入参数值是不是存在作为列表?