从表中选择列的值不等于'myvalue'的列

时间:2013-10-19 19:02:45

标签: mysql multiple-columns

我有一个非常关键的代码。我正在尝试从一个表的两列中选择与一列中另一个表的记录匹配的所有记录。 这是我到目前为止的结果

SELECT username FROM users 
WHERE username NOT IN (SELECT friend FROM friends WHERE friend = 'user1') 
AND username NOT IN (SELECT you FROM friends WHERE you = 'user1')

live demo

这不可能是正确的...... 我希望列[username]中的记录与表{friends}中的[you]和[friend]列中的'user1'不匹配,是sql选择的结果。 请参阅演示以获得更多理解。 谢谢你的帮助。

问题解决了,希望这可以帮助其他人

SELECT username,you,friend FROM users, friends 
WHERE you IN (SELECT you FROM friends WHERE you != 'user1') 
AND friend IN (SELECT friend FROM friends WHERE friend != 'user1')
AND username IN (you,friend)

这是Live demo

1 个答案:

答案 0 :(得分:0)

我们现在可以解释你想要的两种方式。

选项1 - 这正是我想你所要求的,但不是我想你想要的。

SELECT username FROM users u, friends f
WHERE username = f.friend and f.friend <> 'user1'
union
SELECT username FROM users u, friends f
WHERE username = f.you and f.you <> 'user1'

Option2 - 这就是我想你想要的。见how to translate it to mysql.     SELECT username FROM users u,friends f     用户名= f.friend和f.friend&lt;&gt; 'USER1'     相交     SELECT username FROM users u,friends f     用户名= f.you和f.you&lt;&gt; '用户1'