我有这样一条sql:
SELECT
*,
IF (
`pid` > 0,
concat('0', ',', `pid`, ',', `id`),
concat(`pid`, ',', `id`)
) new_str
FROM
`shop`
WHERE
`deleted_at` IS NULL
AND `type` < 2
AND `status` = 1
ORDER BY
new_str DESC,
id DESC
但是我使用这样的方式:
SELECT * FROM `shop` WHERE `deleted_at` IS NULL AND `type` < 2 AND `status` = 1 order by id desc
递归的方法如下:
/**
* 树状结构
*
*/
function getTree($cates, $pid = 0)
{
static $tree = [];
foreach ($cates as $cate) {
if ($cate['pid'] == $pid) {
//父类数组赋给$tree数组
$tree[] = $cate;
$this->getTree($cates, $cate['id']);
}
}
return $tree;
}
结果确实少了一条
我查询了一下 也没有重复的条数:
SELECT
*
FROM
`shop`
WHERE
`deleted_at` IS NULL
AND `type` < 2
AND `status` = 1
GROUP BY
`name`
HAVING
COUNT(*) > 1
我递归错误的地方在哪里呢?
这样也是少一个,此处仅是为了记录