我有一个包含很多字段的表joomla_jdownloads_cats_backup
。重要字段为:cat_dir_parent
,parent_id
,cat_dir_name
,cat_id
cat_dir_parent
,cat_dir_name
,cat_id
的值是正确的。 cat_dir_name
是目录的名称,cat_dir_parent
是cat_dir_name
的根路径,cat_id
是该目录的数据库ID。例如:
cat_dir_parent cat_dir_name cat_id parent_id
MyRootDir dir1 1 ?
MyRootDir dir2 2 ?
MyRootDir 3 ?
应使用 MySql UPDATE 插入parent_id
的值,但经过数小时的试用后,我找不到任何方法......
对于每一行,parent_id
应该等于cat_id
的{{1}},cat_dir
等于给定行的cat_dir_parent
,或0
没有任何父母。例如:
cat_dir_parent cat_dir_name cat_id parent_id
MyRootDir dir1 1 3
MyRootDir dir2 2 3
MyRootDir 3 0
MySql代码可以执行此任务吗?
我需要执行以下步骤,我不知道如何操作:
cat_dir_parent
cat_id
cat_dir_name
等于给定cat_dir_parent
parent_id
cat_id
设置为等于所选的UPDATE joomla_jdownloads_cats_backup t1
INNER JOIN
joomla_jdownloads_cats_backup t2
ON t1.cat_dir_parent = t2.cat_dir_name
SET t1.parent_id = t2.cat_id
这是我的最后一次试验,没有成功:
pom.xml
答案 0 :(得分:1)
我能够UPDATE
parent_id
成功使用与您类似的查询。我刚刚使用LEFT JOIN
将parent_id
设置为0
,而不是父项,以防它的初始值为NULL
。否则,如果您更喜欢使用INNER JOIN
,则必须根据您的要求手动将parent_id
所述记录设置为0
,这也可以。
UPDATE joomla_jdownloads_cats_backup T1
LEFT JOIN joomla_jdownloads_cats_backup T2 ON T1.cat_dir_parent = T2.cat_dir_name
SET T1.parent_id = IFNULL(T2.cat_id, 0);