在一列中选择给定的值组合

时间:2015-07-16 14:32:32

标签: sql oracle select

我无法以给定的方式编写此脚本。
我们假设我们有一个包含两列的表:entityattribute
attribute具有静态数量的可能值,例如1到10.一个entity每个attribute值只能有一行(实体a无法拥有属性8两次)。
如何仅选择entities只有attribute值为2和6的两个>>import numpy as np >>import math >>mean = 2.5 >>deviation = math.sqrt(10) >>s = np.random.normal(mean,deviation, 1000)

1 个答案:

答案 0 :(得分:2)

我希望我能正确理解你的陈述:

select t1.entity
from your_table t1
join your_table t2
  on t1.entity = t2.entity
 and t2.attribute = 6
where t1.attribute = 2
and not exists (
    select null
    from your_table t3
    where t3.entity = t1.entity
    and t3.attribute not in (2,6)
);

以上不仅确保只为您提供同时拥有26属性的实体,而且还确保它除了那些属性之外没有任何其他属性。 #39;我从你的问题陈述中理解的。

修改

这是另一种更简单的方法,它依赖于您不能拥有重复的属性条目。

select entity
from your_table
where attribute in (2,6)
group by entity
having count(*) = 2;

如果您需要检查3个属性,只需调整IN子句以添加第3个值,然后更改having count(*)子句以检查3而不是2