我想使用 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/