我将域名存储在表格中,表格格式为
**id** **node_name** **name** **parent_id**
1 com com null
2 example example.com 1
3 test test.example.com 2
4 dev dev.test.eaxmple.com 3
5 good good.example.com 2
现在我的问题是,我想使用MySQL递归更新查询将"example"更新为"something"。当我将"example"更新为"something"时,我希望它的所有子元素都更新为"something"。
输出:**id** **node_name** **name** **parent_id**
1 com com null
2 something something.com 1
3 test test.something.com 2
4 dev dev.test.something.com 3
5 good good.something.com 2
谢谢,乐
我用简单的选择和更新命令解决了这个问题。我已经测试过了,它工作得很好。如果你们中的任何一个人在这个声明中发现任何错误,请随时评论。
select id into @domainId from domain where name = 'example.com';
select name into @parentName from domain where
id = (select parent_id from domain where name = 'example.com');
set @updatedName = concat('something', '.', @parentname);
update domain set node_name = 'something', name = @updatedName where id = @domainId;
update domain set name = concat(SUBSTRING_INDEX(name, concat('.','example.com'), 1), '.',
@updatedName) where name like concat('%', '.', 'example.com');