我需要在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给定身份证的两个方向。这个概念相当清楚,不是吗?但是,我如何在精选声明中做到这一点?谁能帮助我?谢谢。
答案 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更改为参数。