首页 > 解决方案 > 如何从具有匹配列的两个不同 SELECT 语句中获取行

问题描述

我的 MySQL 数据库中有一个名为关系的表,其中包含 follower_id 和 follow_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 中有没有更快的方法来做到这一点?

标签: mysqlsql

解决方案


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

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

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


推荐阅读