我的下表user_user
包含字段(userid1
,userid2
)
我想选择与特定用户X相关的所有用户,无论他们是否在第一列或第二列。但我只想选择其他用户......即。我不希望X成为结果集的一部分。
如何做到这一点?
SELECT * FROM user_user WHERE userid1 = X.id OR userid2=X.id
将提供一个子表,该子表不是与X有关系的直接用户列表,需要一些后期处理...是否有更直接的SQL命令?
答案 0 :(得分:2)
SELECT userid1 AS relateduserid
FROM user_user
WHERE userid2 = XID
UNION
SELECT userid2
FROM user_user
WHERE userid1 = XID
答案 1 :(得分:0)
SELECT * FROM user_user
WHERE (Not userid1 = @X) AND (Not userid2=@X)
答案 2 :(得分:0)
这应该在任一字段中获取所有不包含用户的记录:
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>
)