【发布时间】: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 的帖子,而不是单独的帖子。那我该怎么做呢?不使用内部查询是否可以?
【问题讨论】:
我有 2 个表 post 和 comments,我想选择 10 个帖子加入所有 cmets:
SELECT * from post p left join comments c on p.id = c.post LIMIT 10;
此查询将不起作用,因为该限制适用于带有 cmets 的帖子,而不是单独的帖子。那我该怎么做呢?不使用内部查询是否可以?
【问题讨论】:
试试这个
SELECT P.*,C.*
From (SELECT * FROM post LIMIT 0,10) AS P
Left Join comments C ON C.Id = P.ID
【讨论】:
直接的解决方案是分开一点:
SELECT *
FROM comments c
LEFT JOIN (SELECT * FROM post LIMIT 10) p
ON p.id = c.post;
【讨论】:
GROUP_CONCAT() 将所有 cmets 聚合到一个字段中。这将导致每个帖子只有一行,所有 cmets 都在一个字段中。然后你可以在没有内部查询的情况下使用LIMIT。