我想在我的数据库架构中使用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'))
答案 0 :(得分:0)
使用变量是否适合您?
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
的变量,然后将在insert语句中使用该变量。我使用了额外的IFNULL
检查,以防止在null
为空时获取@path
值。
请注意,我必须删除report_query_id
字段以进行测试。