mysql - MySQL的路径枚举树模型

标签 mysql sql tree

我想使用 Path Enumeration我的数据库架构中的分层模型。 问题是 MySQL 不允许我在同一个表上使用子查询来检索父行路径。

有没有办法在不创建临时表的情况下解决这个问题?

这是我的表的 DDL:

CREATE TABLE COC_FIELD
(
    field_id VARCHAR(255) PRIMARY KEY NOT NULL,
    name VARCHAR(255),
    query_id VARCHAR(255) NOT NULL,
    path_enumeration VARCHAR(1000),
    FOREIGN KEY ( report_query_id ) REFERENCES COC_QUERY ( query_id )
);

插入子行的语句(MySQL 中不允许):

insert into COC_FIELD(field_id, name, report_query_id, path_enumeration)
values('field_2', 'Month', 'query_1', CONCAT(
    (select path_enumeration from COC_FIELD where field_id = 'field_2'),
    '/', 'field_3'))

最佳答案

您可以选择使用变量吗?

SET @path = (SELECT path_enumeration FROM COC_FIELD WHERE field_id = 'field_2');

INSERT INTO COC_FIELD(field_id, name, path_enumeration)
VALUES ('field_2', 'Month', CONCAT(IFNULL(@path, ''), '/', 'field_3'));

第一个语句设置一个名为 path 的变量,该变量随后将在插入语句中使用。我使用了额外的 IFNULL 检查来防止在 @path 为 null 时获取 null 值。

请注意,我必须删除测试的 report_query_id 字段。

关于mysql - MySQL的路径枚举树模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23187840/

相关文章:

c++ - BST前序遍历并将树内容写入临时数组

java - html 单选按钮添加到数据库

mysql - Node.js mysql 模块变量

java - Spring Boot 连接到 AWS RDS MySQL - SSLHandshakeException : Received fatal alert: unknown_ca

php - 使用 createNativeQuery 连接两个没有外键的实体

c# - LINQ to SQL 多表左外连接

sql - ZF2插入多行

sql - 对主键使用 uniqueidentifier 是否更安全?

algorithm - 2-3棵树,数据存储

python - NLTK 话语树到边列表