0

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

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

现场演示

这不可能是正确的......我希望表 {friends} 中的 [you] 和 [friend] 列中的 [username] 列中不匹配 '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)

这是一个现场演示

4

1 回答 1

0

我们现在可以通过两种方式来解释您想要的内容。

Option1 - 这正是我认为你所要求的,但不是我认为你想要的。

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 - 这就是我认为你想要的。看看如何把它翻译成mysql。 SELECT username FROM users u, friends f WHERE username = f.friend and f.friend <> 'user1' intersect SELECT username FROM users u, friends f WHERE username = f.you and f.you <> 'user1'

于 2013-10-19T19:22:49.067 回答