Mysql 如何从两个具有匹配列的不同SELECT语句中获取行

Mysql 如何从两个具有匹配列的不同SELECT语句中获取行,mysql,sql,Mysql,Sql,我的MySQL数据库中有一个名为relationships的表,其中包含follower\u id和followerd\u id列。这些列表示Instagram上的以下内容,例如,如果id为1的帐户后跟id为2的帐户,则我的表中会存在一行,follower\u id为1,followerd\u id为2 我想做的是能够找到同时跟随ID为1和ID为4的帐户的帐户。我尝试过使用如下SELECT语句创建临时表: CREATE TEMPORARY TABLE temp1 SELECT follower

我的MySQL数据库中有一个名为relationships的表,其中包含follower\u id和followerd\u id列。这些列表示Instagram上的以下内容,例如,如果id为1的帐户后跟id为2的帐户,则我的表中会存在一行,follower\u id为1,followerd\u id为2

我想做的是能够找到同时跟随ID为1和ID为4的帐户的帐户。我尝试过使用如下SELECT语句创建临时表:

CREATE TEMPORARY TABLE temp1 
SELECT follower_id FROM relationships 
WHERE followed_id = '1'


并试图交叉引用两个临时表,但这需要很长时间。在MySQL中有没有更快的方法可以做到这一点?

只需使用以下查询选择不同的追随者id即可:-

SELECT DISTINCT follower_id FROM relationships 
WHERE followed_id IN ('1', '4');

希望,这将解决您的问题。

一个非常简单的方法是:

SELECT follower_id FROM relationships WHERE followed_id=1 AND follower_id IN 
(SELECT follower_id FROM relationships WHERE followed_id=4)
SELECT follower_id
FROM relationships 
WHERE followed_id IN (1, 4)
GROUP BY follower_id
HAVING COUNT(*) = 2;  -- number of followed
SELECT follower_id
FROM relationships 
WHERE followed_id IN (1, 4)
GROUP BY follower_id
HAVING COUNT(*) = 2;  -- number of followed