MySQL限制左表加入

时间:2014-11-09 19:50:33

标签: php mysql sql codeigniter

我有以下查询:

SELECT * FROM (`bf_discussion`) JOIN `bf_discussion` as b ON `b`.`parent` = `bf_discussion`.`id` WHERE `bf_discussion`.`projec_id` = '1' LIMIT 10

我正在尝试从数据库中选择10个讨论。这些讨论中的每一个都可能有无限量的子节点(由parent_id引用)。

如何将LEFT表限制为仅10,同时允许无限制地检索子讨论?

(我在Codeigniter中使用它,所以如果在codeigniter中有一个很好的解决方案,这将是完美的)

1 个答案:

答案 0 :(得分:1)

子选择通常不理想,但这个查询怎么样?它将返回最多10个与您的特定项目_id的讨论,但也将返回所有儿童讨论以进行这些家长讨论。

SELECT
parents.*, b.* 
FROM 
(SELECT * FROM bf_discussion 
  WHERE projec_id = 1 
  LIMIT 10) parents
LEFT JOIN bf_discussion b ON parents.id = b.parent