Mysql 如何从两个具有匹配列的不同SELECT语句中获取行
我的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语句创建临时表: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
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