表结构:
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 开始
求一个能批量添加的语句!数据有点多
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