mysql 无限上级_mysql无限上级

本文介绍了一种通过SQL查询用户及其上级信息的方法。利用递归查询和自连接技术,可以有效地获取指定用户的多级上级数据,并根据层级进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* 查询上级数据

*/

public function find_parent_info($uid, $field = "T2.uid,T2.nickname,T2.level,T2.goods_num", $condition = "T2.status = 1", $limit = 0) {

$prefix = Env::get('database.prefix', 'tp_');

$user_table = "user";

$sql = "SELECT {$field}

FROM (

SELECT

@r AS _id,

(SELECT @r := spread_uid FROM {$prefix}{$user_table} WHERE uid = _id) AS spread_uid,

@l := @l + 1 AS lvl

FROM

(SELECT @r := {$uid}, @l := 0) vars,

{$prefix}{$user_table} h

WHERE @r <> 0) T1

JOIN {$prefix}{$user_table} T2

ON T1._id = T2.uid

WHERE {$condition} ";

if ($limit > 0) {

$sql .= " ORDER BY T2.uid DESC LIMIT 0,{$limit}";

} else {

$sql .= "ORDER BY T1.lvl DESC";

}

return Db::query($sql);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值