php - MySQL 用 join 限制左表

标签 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 中有一个好的解决方案那就完美了)

最佳答案

子选择通常并不理想,但是这个查询怎么样?它将返回最多 10 个包含您指定的 project_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

关于php - MySQL 用 join 限制左表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832536/

相关文章:

php - 图像与文件夹取消链接,但无法从数据库列中删除

php - 数据库未与 php 连接

SQL对列的第一个字符排序

php - 在 Symfony 中重定向之前访问调试(分析器)信息

mysql - Shiro - 无法使用散列密码进行身份验证

php - 如何在服务器端将 Base64 字符串读取为文件,而不将其保存在 Web 服务器中,直接通过 PHP?

c# - ExecuteNonQuery() 语法错误 c#

mysql - 两个左外连接未正确求和

sql - 在不使用 ROW_NUMBER() OVER 函数的情况下获取分区内行(等级)的序列号

php - 使用 phpunit 在 mysql 中测试二进制类型的数据库