SQL为LAST_INSERT_ID()添加前缀

pob*_*ska 1 php sql

我使用以下两行来复制SQL数据库中单个数据的id.

$generate_projects_number = 
    "UPDATE `projects` 
        SET `id_project` = LAST_INSERT_ID() 
        WHERE `projects`.`id` = LAST_INSERT_ID();";
$conn->query($generate_projects_number);
Run Code Online (Sandbox Code Playgroud)

现在我在行中只有相同的ID号id_project,我想在那里有例如2018P4158(当前年份,'P',项目ID).

我们项目编号的方案:当前年份,'P',项目编号(例如2018P4158)

如何在LAST_INSERT_ID()值中添加前缀?

Seb*_*sch 7

您可以使用以下方法CONCAT:

$generate_projects_number = 
    "UPDATE `projects` 
        SET `id_project` = CONCAT(YEAR(CURDATE()), 'P', `projects`.`id`) 
        WHERE `projects`.`id` = LAST_INSERT_ID();";
$conn->query($generate_projects_number);
Run Code Online (Sandbox Code Playgroud)

您可以自己设置年份(使用PHP),也可以使用它YEAR(CURDATE())来获取数据库端的当前年份.您不需要调用该函数 LAST_INSERT_ID两次,因为该值id应该相同(请参阅您WHERE的查询部分).

  • 在concat中使用projects.id而不是LAST_INSERT_ID()是一个非常好但微妙的改进:) (2认同)