mysq 5.1给字段赋值

MySql 码拜 9年前 (2016-06-02) 1065次浏览
表结构:
ks              ks_code         ys           ys_code
儿科           1                       张         1
儿科           1                       丽         2
儿科           1                       王         3
妇科           2                       孙         1
妇科           2                       照         2
意思是:  现在  ks  ys 是有内容的   ,,ks_code     ys_code  是空的
现在想添加   ks_code  和  ys_code 字段     相同科室用1个编号,由1开始,12345
相同科室的ys_code  用   重 12345 开始
求一个能批量添加的语句!数据有点多
解决方案

25

use db1;
show tables;
create table _t( ks varchar(10), ks_code int, ys varchar(10), ys_code int);
insert _t(ks, ys) values
 ("儿科", "张"),
 ("儿科", "丽"),
 ("儿科", "王"),
 ("妇科", "孙"),
 ("妇科", "照");
SET SQL_SAFE_UPDATES = 0;
update _t
,(select ks, @i:=@i+1 as i from(select distinct ks from _t)a,(select @i:=0)b) ks
,(select ys, @j:=@j+1 as j from(select distinct ys from _t)a,(select @j:=0)b) ys
set ks_code=ks.i, ys_code=ys.j
where _t.ks=ks.ks and _t.ys=ys.ys;
SET SQL_SAFE_UPDATES = 1;
select * from _t;
 drop table _t;

15

SELECT ks,ys,ys_code,result.i AS ys_code FROM (SELECT *,
		IF(@pa=ff.ks,@rank:=@rank+1,@rank:=1) AS ys_code,@pa:=ff.ks 
    FROM (SELECT _t.ks,_t.ys,ks_code.i FROM _t,(select ks, @i:=@i+1 as i from(select distinct ks from _t)a,(select @i:=0)b) ks_code where _t.ks=ks_code.ks GROUP BY ks,ys) ff,
			(SELECT @rank:=0,@rownum:=0,@pa=NULL) tt) result

借用楼上高手的结构,本人转成update


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysq 5.1给字段赋值
喜欢 (0)
[1034331897@qq.com]
分享 (0)