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