sql - MySQL 查询 : I need all "friendships" between different users

标签 sql mysql database

我需要 MySQL 查询方面的帮助。查询的输出应如下所示

User1       User2
xxx1        xxx2
xxx3        xxx1

但不是

User1       User2
xxx1        xxx2
xxx2        xxx1

等等。

我需要不同用户之间的所有“友谊”。友谊存在,即当

UserId 8 exists in Column User1_id  
UserId 4 exists in Column User2_id  
**AND**
UserId 8 exists in Column User2_id  
UserId 4 exists in Column User1_id 

友谊表

+----------+----------+
| User1_id | User2_id |
+----------+----------+
|        8 |        4 | 
|        4 |        8 | 
|       29 |        4 | 
|        4 |       10 | 
|       10 |        4 | 
|        8 |       37 | 
|        4 |       29 | 
|       37 |        8 | 
|       37 |        4 | 
|       29 |        8 | 
|        4 |       37 | 
|        8 |       10 | 
|        8 |       29 | 
|        4 |       40 | 
|       40 |        4 | 
|       40 |       29 | 
|       29 |       40 | 
+----------+----------+

用户表

+----+-----------------------------+
| id | username                    |
+----+-----------------------------+
|  4 | hhessel                     | 
|  8 | xxx1                        | 
| 10 | xxx2                        |  
| 29 | xxx3                        | 
| 40 | xxx4                        | 
| 37 | xxx5                        | 
| 39 | xxx6                        | 
+----+-----------------------------+

最佳答案

用途:

SELECT a.user1_id, 
       a.user2_id
  FROM FRIENDSHIP a
  JOIN FRIENDSHIP b ON b.user2_id = a.user1_id
                   AND b.user1_id = a.user2_id
                   AND b.user1_id > a.user1_id

如果您希望反转列值,则必须反转 user1_id 比较:

AND b.user1_id < a.user1_id

关于sql - MySQL 查询 : I need all "friendships" between different users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561346/

相关文章:

mysql - ORDER BY CASE 行为不正确

Mysql按行数进行子查询

php - 修改 View 而不删除基础表

mysql - 在 MySQL 中按日期时间范围选择非常慢

c# - 数据库(模式)管理库

sql - 按解释编译存储过程

在这里加入 MySQL 是最佳选择吗?

php - 当有多棵树时,使用修改后的前序树遍历进行选择

mysql - 如何在 MySQL 字段中选择逗号分隔值的唯一值?

iphone - 如何在 coredata 上下文中使用预填充的数据库