如何选择所有未激发的用户和不共享相同角色的用户?

时间:2019-03-18 09:41:26

标签: mysql join

在这上呆了几个小时,似乎无法正确查询。

有两个角色,(老师和学生)。我希望它能选择所有user_id以及所有尚未成为朋友并且具有与给定用户相反角色的用户的角色。

这是我到目前为止所拥有的。我尝试使用左右联接进行实验,但是发现不断得到意想不到的结果。

任何有帮助的人。

select distinct(opposites.id) new_friend, role
               from (
                      select user_id
                      from users
                      right join relationships
                      on
                      relationships.user_id = ?
                    ) strangers
               inner join
                    (
                      select * from users
                      where role != (
                                      select role from users where users.id = ?
                                    )
                    ) as opposites;

以下是关系表的结构。

+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| user_id   | int(11) | NO   | PRI | NULL    |       |
| friend_id | int(11) | NO   | PRI | NULL    |       |
+-----------+---------+------+-----+---------+-------+

users表具有一个id属性,这是它的主键。

0 个答案:

没有答案