比如yjy_content_type表,parent_id为父级id,sort为排序字段,且父级和子级都需要根据自己的级别排序查询出来。

思路:在查询的时候先将父级的排序g_max_sort加到子级上(此字段主要是用于父级排序),然后用另一个字段sortg显示是否是同一组(有parent_id就用parent_id的值,否则用自己的id值)。

SELECT
	a.`id`,
	a.`parent_id`,
	a.`sort`,
	(CASE  WHEN a.parent_id!=0 THEN b.sort ELSE a.sort END ) as g_max_sort,
	(CASE a.parent_id WHEN 0 THEN a.id ELSE a.parent_id END ) as sortg,
	a.STATUS AS status_text,
	a.`content`,
	a.`title`,  
	a.`status`,
	a.create_time AS create_time_text 
	`yjy_content_type` `a`  LEFT JOIN  yjy_content_type b ON a.parent_id=b.id
	ORDER BY g_max_sort desc ,sortg,parent_id,sort desc

连表是因为父级也需要排序,否则可以不用加g_max_sort和连表操作。

DROP TABLE IF EXISTS `org_tab`; CREATE TABLE `org_tab` ( `id` bigint(8) NOT NULL AUTO_INCREMENT, `org_name` varchar(50) NOT NULL, `org... set global log_bin_trust_function_creators=TRUE; DROP FUNCTION IF EXISTS getProductCategoryChildIDs; CREATE FUNCTION getProductCategoryChildIDs... SELECT @r AS _id, (SELECT @r := parent_code FROM city_info WHERE city_code = _id) AS parent_id, @l := @l + 1 AS lvl
本文综述了 MySQL 中CTE在处理 父子 结构 数据 查询 中的应用、优化策略,以及如何通过实际案例加深理解。 首先,文章介绍了CTE语法并给出一个 父子 结构 简单示例。随后,重点转向CTE递归 查询 的使用,通过一个实战示例展示了如何 查询 所有公司的路径(祖 列表),详细解释了CTE 查询 的逻辑和过程,强调了其在简化复杂层 查询 方面的优势。 在性能优化部分,文章强调了虑递归深度、索引使用、避免全表扫描的重要性,并提供了实践建议,指导读者如何根据数据规模调整 查询 策略。
根据父id 查询 下面所有子节点数据。 我们这里以sec_org(部门表)为例,在一个部门表里面包含org_id(子部门id)、parent_org_id(父部门id)、org_name(子部门名称)等字段,我们要实现通过传入一个部门id, 查询 出它下面的所有子部门记录的功能。 我们可以通过 Mysql 函数的递归调用来实现。 1.创建函数getChildrenOrg。 CRE...
在很多业务场景中,我们需要从 数据库 查询 一些树状 结构 的数据,多半以id,pid的形式存储记录。 在Oracle中,能够通过语法轻松实现 父子 间的递归 查询 ,无论到父,子,孙,曾孙等多少 ,都能查出来。 但是在 mysql 中,就没有像Oracle中那样有现成的语法直接调用了。 本篇文章里,我将带大家了解一种在sql中设置参数来进行递归 查询 的方法,如下: 设表test有以下字段:id,name,pi...
DROP TABLE IF EXISTS `merchant_region`; CREATE TABLE `merchant_region` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NULL DEFAULT NULL, `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMAR 组织之间存在层 关系,人员可对应多个组织,对应的多个组织也可以存在上下 关系。 查询 某个人的组织的时候,需要把这个人对应的所有组织,和对应的每一个组织的所有上 都按序 查询 出来。 PersonListDto public class PersonListDTO { private Long id; private String personCode; private String name; private String position; select org_id from ( select t1.org_id, if(find_in_set(parent_id, @pids) > 0, @pids := concat(@pids, ',', org_id), 0) as ischild from ( select org_id,parent_id from olt_organization t FROM( SELECT @r AS _id, (SELECT @r := parent_id FROM department WHERE id = _id) AS parent_id, @a := @a + 1 AS tmp (SELECT @r := ' 查询 的子 id', @a := 0) vars, department h -- 不可少 WHERE @r <&gt