Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于同一表的内容更新表_Mysql - Fatal编程技术网

Mysql 基于同一表的内容更新表

Mysql 基于同一表的内容更新表,mysql,Mysql,我有一张桌子: id, number, name, display_name 0001, 1, Category 1, null 0001-0002, 2, Category 2, null 0001-0002-0003, 3, Category 3, null id是类别的完整路径,编号只是最终类别编号。 我想更新显示名称,以包括路径中所有类别的全名,因此它们最终将作为 0001, 1, Category 1, Category 1 0001-0002, 2, Category 2, Ca

我有一张桌子:

id, number, name, display_name

0001, 1, Category 1, null
0001-0002, 2, Category 2, null
0001-0002-0003, 3, Category 3, null
id是类别的完整路径,编号只是最终类别编号。 我想更新显示名称,以包括路径中所有类别的全名,因此它们最终将作为

0001, 1, Category 1, Category 1
0001-0002, 2, Category 2, Category 1 > Category 2
0001-0002-0003, 3, Category 3, Category 1 > Category 2 > Category 3
我知道我可以通过对数字列的查找来动态生成这些数据,但是这个表不需要经常更改,但是它有很多查找--不只是计算和存储一次数据似乎很浪费。我可以用php来做,但是速度很慢,我想有更好的方法来做吗?或许我只是用了一种完全错误的方式。我意识到桌子上有很多多余的东西。。。我很乐意听取任何意见

我尽可能地

update categories set display=(select name from (select name from categories where number=1) t) where number=1

但这显然只是将名称复制到显示名称。

规范化您的表,您就不会有上述头痛的问题。我基于第三方来源获取此数据,因此我只能使用它。也就是说,数据是标准化的,我只是为了性能原因而去标准化。您有多少个级别?