MySQL递归更新同一表的子行



我将域名存储在表格中,表格格式为

**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'); 

相关内容

  • 没有找到相关文章

最新更新