根据另外2列值的部分更新列值

时间:2015-10-23 04:01:45

标签: mysql wordpress string-concatenation

我正在尝试将数据库从自定义CMS迁移到WordPress。通过MySQL中的phpMyAdmin,我需要根据另外两个预先存在的列的值生成一个新列:

+------------------+---------------------+--------------------+
| id               | post_date           | guid               |
+------------------+---------------------+--------------------+
| WW955q4ifda1j971 | 2005-08-02 16:51:48 |                    |
| WW955q4m1dlklhx1 | 2005-08-02 16:59:36 |                    |
| WW955q4n3pko4dsw | 2005-08-02 17:01:54 |                    |
+------------------+---------------------+--------------------+

此新列将被称为guid,并且应具有以下值结构:http://www.example.com/wp-content/uploads/2005/08/WW955q4ifda1j971.jpg

需要使用post_date值和整个id的部分构建,如下所示:http://www.example.com/wp-content/uploads/[post_date-year]/[post_date-month]/[id].jpg

我对MySQL几乎一无所知,这就是我通常通过phpMyAdmin工作的原因,我真的需要你的帮助。

希望这不会太混乱:P先谢谢你,伙计们! :)

1 个答案:

答案 0 :(得分:1)

这是您需要的更新查询:(用表替换表格)

UPDATE table
SET guid = CONCAT(
    "http://www.example.com/wp-content/uploads/",
    YEAR(post_date),"/",
    DATE_FORMAT(post_date, "%m"),"/",
    id,".jpg"
);

编辑:这假定post_date列具有DATETIME数据类型。如果它是VARCHAR,而不仅仅是YEAR(post_date)DATE_FORMAT(post_date, "%m"),则必须使用YEAR(STR_TO_DATE(post_date, "%Y-%m-%d %H:%i:%s"))DATE_FORMAT(STR_TO_DATE(post_date, "%Y-%m-%d %H:%i:%), "%m")