MySQL根据条件UPDATE数据

来源:互联网 发布:4*4 矩阵开关 编辑:程序博客网 时间:2024/06/07 09:14

1、第一种:使用b表数据更新a表

update Player as a ,PlayerSet as b

set a.role_id=b.set_value 

where a.role_id=b.set_key

2、第二种:也是使用b表数据更新a表,只是方法不一样

update RoleSet
set_key=(SELECT name FROM Player where id = RoleSet.set_value); 

3、第三种:使用中间表,解决下面错误
Error Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxxxxxx' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by(中文意思大概是:不能对同一张表进行同时读写)

(分享一个小技巧:使用变量增加不重复后缀)
set @i:=1;
update Group 
SET name=CONCAT(name,'_', (@i:=@i+1))
where name in
(
SELECT a.GroupName
from
(
        SELECT name  as GroupName
        FROM Group 
        GROUP BY name 
        HAVING count(*) > 1
) as a
);


原创粉丝点击