【问题标题】:How to get rows from two different SELECT statements with matching columns如何从具有匹配列的两个不同 SELECT 语句中获取行
【发布时间】:2019-02-12 10:42:11
【问题描述】:

我的 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 中是否有更快的方法来执行此操作?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:
      SELECT follower_id FROM relationships WHERE followed_id=1 AND follower_id IN 
      (SELECT follower_id FROM relationships WHERE followed_id=4)
      

      【讨论】:

        【解决方案3】:

        一个非常简单的方法是:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-19
          • 1970-01-01
          • 2021-11-22
          • 2019-10-02
          • 1970-01-01
          相关资源
          最近更新 更多