这可以成为一个SQL连接

时间:2016-10-13 14:34:41

标签: sql join

我想找到mydata具有Q值但不至少有一个相应d值的位置。如何使用左连接或右连接来解决?

如果使用连接无法解决,请详细说明原因,因为我没有看到它。

以下是我发现的解决方案,该解决方案适用于所提供的数据。

SELECT distinct tablea.mykey 
FROM mytest as tablea
where tablea.mydata = 'Q'
  and tablea.mykey not in (select distinct tableb.mykey 
                           FROM mytest as tableb
                           where tableb.mydata = 'd')
mykey   mydata
7   d
5   Q
5   d
5   d
6   Q
6   d
6   a
9   Q
9   a
9   a

1 个答案:

答案 0 :(得分:0)

您可以使用外部联接,然后仅选择不匹配

SELECT distinct tablea.mykey 
FROM   mytest as a
left join mytest as b on a.mykey = b.mykey
                      and b.mydata = 'd'
where  a.mydata = 'Q'
and    b.mykey is null