我在mysql'url_map'中有一个包含2列的表:id,url,其中填充了一些值。像这样:
+----+-----------------------------------------+ | id | url | +----+-----------------------------------------+ | 1 | http://myserver.mywebsite.com/file1.txt | | 2 | http://myserver.mywebsite.com/file2.txt | +----+-----------------------------------------+
我的要求是使用之前的值将表中每一行的'url'更新为新值。
+----+---------------------------------------------+ | id | url | +----+---------------------------------------------+ | 1 | https://mynewserver.mywebsite.com/file1.txt | | 2 | https://mynewserver.mywebsite.com/file2.txt | +----+---------------------------------------------+
如果您看到更改,则在每一行中,“url”的值都已从
更改休息其他内容保留在以前的状态。
有人可以帮我写这个查询吗?
答案 0 :(得分:0)
您可以直接在更新语句中使用以前的值
UPDATE your_table t SET t.url = REPLACE(REPLACE(t.url, 'http://', 'https://'), 'myserver', 'mynewserver')
答案 1 :(得分:0)
我只会做一个UPDATE
语句,如:
UPDATE url_map
SET url = REPLACE(REPLACE(url, 'http', 'https'),'myserver ','mynewserver')
或者如果你想在一个REPLACE
中进行(因为http和myserver基本上是一个字符串)
UPDATE url_map
SET url = REPLACE(url, 'http://myserver', 'https://mynewserver')
答案 2 :(得分:0)
嗯,正如你的例子所说,你可以使用替换方法。
Update url_map
Set url = replace(url, 'http://myserver', 'https://mynewserver');
答案 3 :(得分:-1)
我还没有对此进行测试,但理论上这应该可行:
UPDATE `url_map` SET url = REPLACE(url, "http://myserver", "https://mynewserver")
答案 4 :(得分:-2)
您必须创建一个程序。在程序中循环遍历行并进行更改。有关详细说明,请参阅https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html。