我遇到以下查询时遇到问题。
id| prop_id| obj_id| value|
1 7 2 1
2 8 2 1
4 7 5 7
5 8 5 12
查询的输入参数是:
我们必须选择prop_id
和values
匹配输入参数的记录:但也有一个约束,结果记录的obj_id
必须相同。如果不相同,则结果必须为空。否则它必须返回obj_id
。
示例:
假设输入参数为:(7,1)和(8,12)。
现在有两个记录具有这样的值:第一个和最后一个。
但是,第一条记录的obj_id
为2,第二条记录的obj_id
为5.因此,结果必须为空,因为2!= 5。
另一个例子:
假设输入参数为:(7,7)和(8,12)。
现在有两个记录具有这样的值:最后两个记录。
第一个obj_id
为5,第二个记录的obj_id
也为5.因此,结果必须为5.
答案 0 :(得分:3)
试试这个
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