返回信息流假设有张表叫AAA,表中有三个字段:
1、id,int(11),主键ID;
2、num,int(11),分数;
3、level,varchar(255),评分等级,是一个json写入的,比如[A,B,C,D,E]
其中A,B,C,D,E有一个到分数的映射,
A=10,B=20,C=30,D=40,E=50
需要计算每条记录的level字段映射的得分之和,加到num字段中,同时清空level字段
比如有一条记录为(1, 25,[A,C,E])
那么level映射的得分之和为10+30+50=90
操作完后该条记录应该为(1,115,)
用substring尝试了半天,搞不定。。。
无奈之下过来求助,谢谢啦!
这是一条镜像帖。来源:北邮人论坛 / database / #7622同步于 2013/8/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
【求助】mysql数据库求个sql语句
watershed
2013/8/8镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
DECLARE @table TABLE
(
ID INT,
num INT,
[level] nvarchar(256)
)
INSERT INTO @table Values(1,20,'A,B,C')
INSERT INTO @table Values(2,25,'A,B')
SELECT ID,Num,Level from @table
DECLARE @Total INT
DECLARE @level NVARCHAR(256)
DECLARE @i INT
SET @i=1
WHILE @i <= (SELECT Count(1) FROM @table)
BEGIN
SELECT @Level = [level]
FROM @table
WHERE ID=@i
SELECT @Total=SUM(p) FROM
(
SELECT CASE col WHEN 'A' THEN 10
WHEN 'B' THEN 20
WHEN 'C' THEN 30
END P
FROM dbo.f_split(@Level,',')
)step1
UPDATE @table
SET Num=Num+@Total, Level=''
WHERE ID=@i
SET @i=@i+1
END
SELECT * FROM @table
非常感谢!
sql不熟,最后没办法,写了个程序读到内存中处理了。。。
【 在 erickies 的大作中提到: 】
: DECLARE @table TABLE
: (
: ID INT,
: ...................