所以,我有一张表,我希望看起来像这样
id | path
----------- -------------------------
000000 | images/0/0/0/0/00.jpg
000001 | images/0/0/0/0/01.jpg
000002 | images/0/0/0/0/02.jpg
其中id
是auto_increment
个数字,path
是一个字符串。我希望将列path
设置为auto_generated,但我无法找到SQL函数来执行此操作。如果我使用Python,我可以使用这个表达式轻松计算路径
ID = 1
path='images/'+'/'.join(str(ID).zfill(6))[::-1].replace('/','',1)[::-1]+'.jpg'
但是,我不知道如何用SQL做到这一点。我知道我可以从数据库中检索ID,然后使用脚本来计算路径,但我认为将所有结果缓存到数据库中以便我的脚本可以更快地工作可能更好。
当然,我可以编写一个脚本来处理它,无论是js,Python还是PHP。但是因为在插入行之前我不知道id会是什么,所以我需要执行INSERT,然后选择SELECT来查找id;然后我必须更新计算的路径。总共这将是三个查询。我想要做的是将整个事情简化为一个查询,因为我担心性能问题。
答案 0 :(得分:1)
我不知道我是否理解正确,但看起来你想要auto_generated路径看起来像一个id但用“/”分隔。如果这就是为什么你不使用php str_split来转换其他字符串中的id字符串,这样你就可以自动生成路径。
例如:
<?php
//first you must do a mysql select to display all fields
//this define your string
$str = $id;
//this cut string with a limit of 1 character
$arr = str_split($str, 1);
//define a string with the path format you want
$path = "images/$arr[0]/$arr[1]/$arr[2]/$arr[3]/$arr[4]/$arr[5]$arr[6].jpg";
//now do a mysql update
UPDATE db_name SET path=$path WHERE id=$id;
?>
结果将更新为路径,其中id = 000001,images / 0/0/0/0.01.jpg