Mysql,replace函数,in函数用法

来源:互联网 发布:软件行业平均利润率 编辑:程序博客网 时间:2024/05/17 22:33
UPDATE param pSET p.content =     REPLACE (        p.content,        'geyin',        'zhuhengtong'    ) WHERE p.`paramType`in('text','img','avi','gif') AND p.`pushType` = 'wechat' AND p.`status` = '1' ;

这段sql的意思就是说:当param表中参数类型为(text,img,avi,gif)这个集合中的任何一个并且param.pushType为wechat,且status字段值为1时,将param表中的content字段中所有’geyin’字符串修改为‘zhuhengtong’。
replace函数:用于替换字符;
用法:update tablename set column = replace(column,’a’,’b’);
把表tablename的column列的a字符,替换成b;

in:用于查找是否在某个集合里,例如:select p.name where p.id in (1,2,3); 找出p表里面id是1,2,3的p的name字段返回值

先select再update时报错:
You can’t specify target table ‘push_param’ for update in FROM clause
解决办法:
因为不能对筛选出来的select结果直接进行update操作。那么我们可以将选择出来的结果再select一遍。或者将select语句当成一个条件,后面再加上其他条件,使结果与select的表不是同一个表就行;例如
UPDATE push_param p
SET p.paramValue = (
REPLACE (
p.paramValue,
‘旧内容’,
‘新内容’
)
)
WHERE
p.pushConfigId IN (
SELECT
id
FROM
push_config c
WHERE
c.busType = ‘PatRegisterSucc’
AND c.pushType = ‘wechat’
AND c. STATUS = ‘1’
)
AND p.paramName = ‘title’;

原创粉丝点击