在批量更新中利用子查询连接字符串与替换数据

2012-03-01

有如下两个表:

ID | URL             | CategoryID
---+-----------------+-----------
1  | http://zhso.net | 1
2  | http://zhso.net | 1
3  | http://zhso.net | 3
ID | Path
---+------------
1  | html/
2  | css/
3  | javascript/

要将第一个表中的URL信息按CategoryID查找出对应的Path信息,拼接后并进行批量替换

1
2
3
4
5
6
UPDATE table1 a, (
	SELECT b.ID, REPLACE(b.URL, 'zhso.net/', CONCAT('zhso.net/', c.Path)) newURL
	FROM table1 b, table2 c
	WHERE b.URL LIKE 'zhso.net/'
	AND b.CategoryID = c.ID) d
SET a.URL = d.newURL WHERE a.ID = d.ID

结果如下表:

ID | URL                         | CategoryID
---+-----------------------------+-----------
1  | http://zhso.net/html/       | 1
2  | http://zhso.net/html/       | 1
3  | http://zhso.net/javascript/ | 3

THX 2 WIKI胡

s@zhso.netPay