Oracle SQL在一个表中查找匹配两个条件的条目

jfgube3f  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(146)

我在Oracle数据库中有一个表,其中包含
| 对象|扩展键|延伸值|
| --------------|--------------|--------------|
| AAA| IP地址|1.2.3.4|
| AAA|用户ID|用户1|
| AAA|下载目录|/homeA|
| 血脑屏障|IP地址|1.2.3.4|
| 血脑屏障|用户ID|用户2|
| 血脑屏障|下载目录|/homeB|
| CCC| IP地址|5.6.7.8|
| CCC|用户ID|用户3|
| CCC|下载目录|/home|
| DDD| IP地址|1.2.3.4|
| DDD|用户ID|用户1|
| DDD|下载目录|/homeD|
当IPAddress为www.example.com且Userid为User 1时,查找所有Object条目的查询是什么1.2.3.4?

3yhwsihp

3yhwsihp1#

可以使用group byhaving

select object
from mytable
where (extension_key, extension_value) in ( ('IpAddress', '1.2.3.4'), ('Userid', 'User1') )
group by object
having count(*) = 2

其思想是过滤表中您感兴趣的两个键/值元组;我们按对象聚合,只保留在两个 predicate 上匹配的对象。
请注意,这假设表中没有重复项-否则我们将在having子句中需要distinct

having count(distinct extension_key) = 2

相关问题