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

时间:2019-02-12 10:42:11

标签: mysql sql

我的MySQL数据库中有一个名为Relationships的表,该表的列为follower_id和followed_id。这些代表Instagram上的关注者,例如,如果ID为1的帐户紧随ID为2的帐户,则我的表中将存在一行,其中follower_id为1且followed_id为2。

我想做的是能够找到同时具有ID 1和ID 4的帐户。我曾尝试使用SELECT语句创建临时表,如下所示:

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

CREATE TEMPORARY TABLE temp2 
SELECT follower_id FROM relationships 
WHERE followed_id = '4'

并尝试交叉引用两个临时表,但这需要很长时间。在MySQL中有更快的方法吗?

3 个答案:

答案 0 :(得分:1)

只需使用以下查询即可选择不同的follower_id:-

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

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

答案 1 :(得分:0)

SELECT follower_id FROM relationships WHERE followed_id=1 AND follower_id IN 
(SELECT follower_id FROM relationships WHERE followed_id=4)

答案 2 :(得分:0)

一个非常简单的方法是:

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