选择连接到两个特定其他行的行

时间:2014-10-23 08:27:46

标签: sql postgresql

我有一个标准的Twitter式架构,用户可以关注并跟随其他用户。我想选择关注其他两个特定用户的用户。

我们在users表中有四个用户。

--------------
| id | name  |
--------------
| 1  | Alan  |
| 2  | Peter |
| 3  | Clare |
| 4  | Julia |
--------------

relationships表描述了谁跟随谁。 followed_idfollower_id是用户的外键。

朱莉娅跟随艾伦和彼得。彼得跟随艾伦和朱莉娅。克莱尔跟随艾伦。

----------------------------------
| id | followed_id | follower_id |
----------------------------------
| 1  | 1           | 4           |
| 2  | 2           | 4           |
| 3  | 1           | 2           |
| 4  | 4           | 2           |
| 5  | 1           | 3           |
----------------------------------

我想只选择跟随Alan和Peter的用户(即结果应该是Julia)。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我认为你需要加入两次关系表与人员表,如下面的查询

SELECT DISTINCT relationships.follower_id,followers.name from relationships
INNER JOIN users as followers on  relationships.follower_id = followers.id
INNER JOIN users as followed on  relationships.followed_id = followed.id
where followed.name IN('Alan','Peter');