Mysql根据列输入动态更新行

时间:2012-11-09 19:34:25

标签: mysql string sql-update

我有以下问题。我有一个名为titles的表,其结构如下:

id int(10),
name varchar(100),

稍后我们添加了一个名为modified_name的新列。它被定义为与name相同,除了它是小写并且所有空格都替换为-。我们添加了此列,因此我们现在需要将正确的修改后的名称值添加到该列的每个记录中。为此,我们编写了一个PHP脚本,通过从数据库中加载值并处理它们来处理它,但这是非常低效的。是否可以编写单个UPDATE查询,该查询将为titles表中的每个记录添加正确的值。我可以想办法用存储过程和while循环来做到这一点,但我想知道是否可以提高效率。它有任何方法来实现以下内容:

UPDATE `titles` 
    SET 
`modified_name` = LOWER(REPLACE(SELECT `name` FROM `titles` WHERE id = PRESENT_VALUE), ' ', '-');

目标是将modified_title表格中每条记录的titles列设置为由该记录的name列产生的唯一值:

# Before modification update query
name = "Hello Goodbye" 
modified_name = ""    

# After modification update
name = "Hello Goodbye" 
modified_name = "hello-goodbye"

感谢您的帮助,任何有关如何做到这一点的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

UPDATE `titles` SET `modified_name` = LOWER(REPLACE(`name`, ' ', '-'))
相关问题