我在提出以下查询时遇到问题。
id| prop_id| obj_id| value|
1 7 2 1
2 8 2 1
4 7 5 7
5 8 5 12
查询的输入参数是:
- (prop_id, value) 对的集合
我们必须选择 prop_id
和 values
匹配输入参数的记录:但也有一个限制,结果记录的 obj_id
必须是相同的。如果不相同,则结果必须为空。否则它必须返回 obj_id
。
示例:
假设输入参数是:(7,1) 和 (8,12)。
现在有两条记录具有这样的值:first 和 last。
但是,第一条记录的 obj_id
是 2,第二条记录的 obj_id
是 5。因此,结果必须为空,因为 2!=5。
另一个例子:
假设输入参数是:(7,7) 和 (8,12)。
现在有两条记录具有这样的值:最后两条记录。
第一条记录的obj_id
是5,第二条记录的obj_id
也是5,所以结果一定是5。
最佳答案
试试这个
select obj_id from table
where (prop_id=7 and value=7) or (prop_id=8 and value=12)
group by obj_id having count(*)=2 and count(distinct object_id)=1
关于sql - 创建 oracle 查询的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38651465/