Фильтрация выбранного столбца в SQL

#mysql #sql #database

#mysql #sql #База данных

Вопрос:

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

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

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

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

Ответ №1:

 SELECT userid1 AS relateduserid
FROM user_user
WHERE userid2 = XID    
UNION

SELECT userid2
FROM user_user
WHERE userid1 = XID
  

Комментарии:

1. Спасибо! похоже на то, что я хочу, но как называется результирующий столбец? идентификатор пользователя 1?

Ответ №2:

 SELECT * FROM user_user 
WHERE (Not userid1 = @X) AND (Not userid2=@X)
  

Комментарии:

1. Это не соответствует требованиям ops.

Ответ №3:

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

 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> 
      )