在SQL中过滤选定的列

时间:2011-05-14 21:23:14

标签: mysql sql database

我的下表user_user包含字段(userid1userid2

我想选择与特定用户X相关的所有用户,无论他们是否在第一列或第二列。但我只想选择其他用户......即。我不希望X成为结果集的一部分。

如何做到这一点?

SELECT * FROM user_user WHERE userid1 = X.id OR userid2=X.id将提供一个子表,该子表不是与X有关系的直接用户列表,需要一些后期处理...是否有更直接的SQL命令?

3 个答案:

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