gpt4 book ai didi

mysql - 创建 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 23:58:12 26 4
gpt4 key购买 nike

下面列出了我的数据库中的一些表。 enter image description here

路线1移动地点1-地点2-地点1

route2 移动 place1-place2-place3-place2-place1

我需要创建一个占用 2 个位置的 SQL 查询:place1place2,并提供包含以下链接的路由的 routeID道路井然有序。我相信它需要在查询中递归。

有人可以帮我吗?我将非常感激。

最佳答案

这是一个起点Hierarchical queries in MySQL

快速提醒:分层数据是包含在一个表中的父子关系。

典型的任务是通过以下方式从表中返回值:

Resultset should be sorted like a tree, that is lexical sort by ancestry chains
Depth level should be returned along with each row

这可能听起来令人困惑,但实际上非常简单,如以下 Oracle 查询所示:

SELECT LPAD(' ', level * 4, ' ') || id, parent, level
FROM t_hierarchy
START WITH parent = 0
CONNECT BY parent = PRIOR id

我们有一个很好的树,按树排序,行根据深度级别缩进。

在上面的查询中,START WITH 定义树的根,CONNECT BY 定义父行和子行之间的连接条件。父列是通过添加 PRIOR 关键字来定义的。

在 MySQL 中没有这样的构造,但可以模拟它。

CREATE FUNCTION hierarchy_connect_by_parent_eq_prior_id(value INT) RETURNS INT
NOT DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE _id INT;
DECLARE _parent INT;
DECLARE _next INT;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @id = NULL;

SET _parent = @id;
SET _id = -1;

IF @id IS NULL THEN
RETURN NULL;
END IF;

LOOP
SELECT MIN(id)
INTO @id
FROM t_hierarchy
WHERE parent = _parent
AND id > _id;
IF @id IS NOT NULL OR _parent = @start_with THEN
SET @level = @level + 1;
RETURN @id;
END IF;
SET @level := @level - 1;
SELECT id, parent
INTO _id, _parent
FROM t_hierarchy
WHERE id = _parent;
END LOOP;
END

关于mysql - 创建 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com