Результаты запроса без обратного - PullRequest
3 голосов
/ 02 января 2011

У меня есть таблица: UserA, UserB, numberOfConnections

Я хотел бы написать запрос, который возвращает мне только строки, которые не имеют обратного значения или примера: для данных:

1 2 10
1 3 10
1 5 10
1 6 10
2 6 10
2 5 10
5 1 10
5 2 10
3 1 10

он должен вернуть

1 2 10
1 3 10
1 5 10
1 6 10
2 6 10
2 5 10

строк:

5 1 10
5 2 10
3 1 10

недействительно, потому что уже есть соответствующие

1 5 10
2 5 10
3 1 10

спасибо за помощь пока

Ответы [ 4 ]

2 голосов
/ 03 января 2011

Это будет делать то, что вы хотите

SELECT mt1.UserA, mt1.UserB, mt1.numberOfConnections
FROM MyTable mt1
LEFT OUTER JOIN MyTable mt2 ON mt1.UserA = mt2.UserB
        AND mt1.UserB = mt2.UserA
WHERE mt2.UserA IS NULL
    OR mt1.UserA < mt2.UserA
0 голосов
/ 03 января 2011

Использование Обновлено

A- Результат без обратного хода

Select UserA, UserB, numberOfConnections
From TName
Where ID Not IN(
SELECT t1.ID
FROM TName As t1 INNER JOIN TName As t2 ON (t1.UserA = t2.UserB) AND (t1.UserB = t2.UserA))

B- Результат только повторен

Select UserA, UserB, numberOfConnections
From TName
Where ID IN(
SELECT t1.ID
FROM TName As t1 INNER JOIN TName As t2 ON (t1.UserA = t2.UserB) AND (t1.UserB = t2.UserA))

C- Результат только обратный, не повторяется

Select UserA, UserB, numberOfConnections
From TName
Where ID IN(
SELECT t1.ID
FROM TName As t1 INNER JOIN TName As t2 ON (t1.UserA = t2.UserB) AND (t1.UserB = t2.UserA) and (t1.UserA<t1.UserB))

D- Результат без обратного и не повторного обратного

A союз C

0 голосов
/ 03 января 2011
with t1 as (
select col1 ,col2,
     row_number() 
      over(partition by case when col1>col2 then col1+col2 else col2+col1 end 
           order by case when col1>col2 then col1+col2 else col2+col1 end) as rownum 
from table_1 )

select * from t1 where rownum =1

если тип данных col1 и col2 не varchar, просто cast их

вы можете заменить row_number на group by

0 голосов
/ 03 января 2011

Почему бы не добавить UserA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...