Фильтрация выбранного столбца в SQL - PullRequest
0 голосов
/ 15 мая 2011

У меня есть следующая таблица user_user с полями (userid1, userid2)

Я хочу выбрать всех пользователей, которые связаны с конкретным пользователем X, независимо от того, находятся ли они впервый или второй столбец.Но я только хочу выбрать других пользователей ... т.е. я не хочу, чтобы X был частью набора результатов.

Как это сделать?

SELECT * FROM user_user WHERE userid1 = X.id OR userid2=X.id даств значительной степени подстать, которая не является прямым списком пользователей, имеющих отношение к X, и требует некоторой постобработки ... есть ли более прямая команда SQL?

Ответы [ 3 ]

2 голосов
/ 15 мая 2011
SELECT userid1 AS relateduserid
FROM user_user
WHERE userid2 = XID    
UNION

SELECT userid2
FROM user_user
WHERE userid1 = XID
0 голосов
/ 15 мая 2011

Это должно получить все записи, которые не содержат пользователя ни в одном из полей:

SELECT U0.*
FROM user_user U0
LEFT OUTER JOIN USER_USER U1
  ON U1.userID1 = U0.userID1
  OR U1.userID1 = U0.userID2
  OR U1.userID2 = U0.userID1
  OR U1.userID2 = U0.userID2
WHERE U1.userID1 IS NULL
  AND ( U0.userID1 = <x>
     OR U0.userID2 = <x> 
      )
0 голосов
/ 15 мая 2011
SELECT * FROM user_user 
WHERE (Not userid1 = @X) AND (Not userid2=@X)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...