特殊情况下如何用MySQL或Go更新结果?

ewm0tg9j  于 2023-02-07  发布在  Mysql
关注(0)|答案(1)|浏览(152)

我想在特殊情况下使用MySQL或Go更新结果:
原始数据:

id    parent_id  grade_id 
test    admin   
test1   test    
test2   test    
test3   test1   
test4   test

需要更新grade_id的列:

id    parent_id    grade_id 
test    admin   
test1   test    admin
test2   test    admin
test3   test1   test
test4   test    admin

根据数据,如果test的父id不为空(父id为admin),则下一个test1的等级id为admin,其余可以按照相同的方式进行。

0g0grzrc

0g0grzrc1#

如果我理解正确的话,您正在寻找一种更新给定表的方法,将grade_id字段设置为使用其parent_id引用的任何记录的parent_id(即test1test作为parent_idtest又将parent_id作为parent_id,因此grade_id应该是admin)。
这可以通过一个非常简单的查询来完成,如下所示:

UPDATE foo AS f LEFT JOIN (
  SELECT ID, parent_id FROM foo
) AS j ON f.parent_id = j.ID
SET f.grade_id = j.parent_id;

此查询的一个简单示例用于演示can be found here

相关问题