【问题标题】:select 10 rows joined with all rows from other table选择 10 行与其他表中的所有行连接
【发布时间】:2014-04-24 06:54:00
【问题描述】:

我有 2 个表 post 和 comments,我想选择 10 个帖子加入所有 cmets:

 SELECT * from post p left join comments c on p.id = c.post LIMIT 10;

此查询将不起作用,因为该限制适用于带有 cmets 的帖子,而不是单独的帖子。那我该怎么做呢?不使用内部查询是否可以?

【问题讨论】:

    标签: mysql sql join


    【解决方案1】:

    试试这个

    SELECT P.*,C.* 
    From (SELECT * FROM post LIMIT 0,10) AS P
                 Left Join comments C ON C.Id = P.ID
    

    【讨论】:

      【解决方案2】:

      直接的解决方案是分开一点:

      SELECT * 
      FROM comments c 
      LEFT JOIN (SELECT * FROM post LIMIT 10) p
        ON p.id = c.post;
      

      【讨论】:

      • 所以没有内部查询是不可能的?
      • @jcubic 您可以使用GROUP_CONCAT() 将所有 cmets 聚合到一个字段中。这将导致每个帖子只有一行,所有 cmets 都在一个字段中。然后你可以在没有内部查询的情况下使用LIMIT。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2014-11-05
      • 1970-01-01
      相关资源
      最近更新 更多