mysql带条件的限制查询_在MySQL查询中可能有条件限制吗?

我面临有关在我们的项目中处理线程注释的决定…

我有一个简单的MySQL表,其中包含所有注释.有两种类型:父母和孩子.孩子代表对父母或其他孩子的答复.

我的问题:

-评论(深度0)

-回复孩子(深度1)

—答复前一个孩子(深度2)

-评论(深度0)

想象一下上面的结构和一个带有LIMIT 2的MySQL查询.它将切掉最后一个答复(深度2).实际上,我想说些类似的话:如果孩子离开,请尝试限制为2,直到下一位父母为止.尝试了几次没有运气的查询…

我现在所拥有的如下:

选择

SQL_CALC_FOUND_ROWS

*

评论

哪里

comment_post_id ='{$_REQUEST [“ ID”]}’

订购

comment_id,comment_date

DESC LIMIT 10“

重要的表字段是:

comment_id(索引)| comment_parent_id(包含parent或NULL的comment_id)| comment_date

我将非常感谢任何想法!!!

礼炮

笨蛋

解决方法:

MySQL没有任何函数可以解析树状结构.在最简单的情况下(子代具有父代的ID),您将需要以编程方式递归到树中以找到给定节点的所有子节点. MaxLevel指示您要转到的深度.每次递归调用时它都会递减,以便最后以0结尾,这将停止递归.

例如(伪代码)

findNodes(String parentId, int maxLevel)

{

select * from posts where parent = parentId

foreach (result...)

{

if (maxLevel > 0)

{

findNodes(result.nodeId, maxLevel - 1)

}

doSomethingWIthAResult

}

}

为了更简洁地执行此操作,有多种技术,所有这些技术都涉及某种索引字段,该索引字段包含当前帖子的路径.路径可能看起来像这样:TopNode:Child1:Child2:Child3 …在其中可以进行如下选择

从帖子中选择*,路径为“ TopNode%”,深度= 2.

标签:conditional,limit,sql,mysql

来源: https://codeday.me/bug/20191210/2101394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值