SQL:使用多列过滤数据

时间:2017-09-23 01:09:16

标签: sql oracle

很抱歉,如果已经询问此查询,但我搜索过但无法找到解决问题的任何内容。

我有两张桌子:

表1:

Act       Marks   
Paint       6   
Paint       7       
Paint       16      
Paint       17  
Swim        6
Swim        2
Sea        448
Sea         17
Drama       6
Drama       7
Drama      16

表2:

Marks   Service_cordinator
  6            X3
  7            A2
  16            A3
  17             X1
  1              X2
  2              X3
  448            X4
  234            X5

查询是获取具有服务协调器X3,A2和A3的所有行为。 即查询应返回PaintDrama

表中没有主键/外键关系。只有Marks的关系在两个表中都很常见。

1 个答案:

答案 0 :(得分:1)

使用marks加入表格,然后group byhaving

select t1.act
from table1 t1 join
     table2 t2
     on t1.marks = t2.marks
where t2.Service_cordinator in ('X3', 'A2', 'A3')
group by t1.act
having count(distinct Service_cordinator) = 3;