А любит Б, а Б не любит А? - PullRequest
1 голос
/ 10 марта 2011

Если мой стол с именем Table выглядит следующим образом:

A B
1 2
3 2
2 1
etc...

Это подразумевает 1 лайк 2, 3 лайка 2 и 2 лайка 1 ... при условии, что это намного больше, чем это, какмне написать SQL-запрос, где я сообщаю, где A любит B, но B не любит A?

Так что для этого случая пример вывода должен быть:

3 2

Поскольку 3 лайка2 из отношения, но 2 не нравится 3.

Ответы [ 2 ]

6 голосов
/ 10 марта 2011
SELECT A, B
  FROM likes x
 WHERE NOT EXISTS (SELECT * FROM likes
                    WHERE x.A = B AND x.B = A)
2 голосов
/ 10 марта 2011

Я думаю, вам просто нужно использовать left join (Отказ от ответственности: я использую SQL Server, а не postgresql)

select l.A, l.B
from likes l
  left join likes nl on l.B=nl.A and l.A=nl.B
where nl.A is null 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...