如何在匹配表中为给定的id选择彼此匹配的用户

时间:2012-05-21 08:23:39

标签: mysql sql many-to-many

我需要在id_user_a和id_user_b为给定用户ID匹配时才选择用户。

users                  // SQL Statements: http://pastebin.com/w34qQv0g
id username
1  user1
2  user2
3  user3
4  user4

matches
id_user_a id_user_b
1         2
2         1
1         4
4         1

如上所示,对于给定的用户ID 1,匹配表中两个方向匹配的id是id = 2和id = 4。因为第一次与第二次匹配,反之亦然(1-2和2-1 :: 1-4和4-1)。

对于给定的id 4,在两个方向(1-4和4-1)中只有一个id匹配,然后在id为4的两个方向上只有id = 1匹配。我想选择匹配的id给定身份证的两个方向。这个概念相当清楚,不是吗?但是,我如何在精选声明中做到这一点?谁能帮助我?谢谢。

1 个答案:

答案 0 :(得分:1)

对于id 4:

SELECT
distinct m1.id_user_b
FROM 
MATCHES M1
JOIN MATCHES M2 ON M1.ID_USER_A = M2.ID_USER_B AND M2.ID_USER_A = M1.ID_USER_B
WHERE M1.ID_USER_A = 4

将4更改为参数。