mysql - 如何在给定 ID 的匹配表中选择彼此匹配的用户

标签 mysql sql many-to-many

仅当给定用户 ID 的 id_user_a 和 id_user_b 彼此匹配时,我才需要选择用户。

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,只有一个 id 在两个方向(1-4 和 4-1)匹配,然后 id=1 在两个方向与 id 4 匹配。我想选择匹配的 id给定 id 的两个方向。这个概念相当清楚,不是吗?但是,我如何在 select 语句中做到这一点?有人可以帮助我吗?谢谢。

最佳答案

对于 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更改为参数。

关于mysql - 如何在给定 ID 的匹配表中选择彼此匹配的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681736/

相关文章:

many-to-many - Elasticsearch 中的多对多关系

sql - 在 MySql 中加载 mysqldump 时更改表架构

php - 在 AJAX 成功时显示成功消息

sql - 双向索引

java - hibernate - 多对多关系中的级联删除

java - JPA manytomany 在使用@JoinTable 时保持列表顺序

mysql - 随着现代社交网络和规模的扩大,Cassandra 能否取代 MySQL 等标准关系数据库?

mysql - FasterCSV 教程将数据导入数据库?

php - mysql 创建一个带有有序子菜单的菜单

mysql - SQL - 每人随机选择一条记录