假如有 A表 (aid,....)
B表 (bid,aid,fieldname,value)
C表 (cid,name,sex,age)
B表数据
bid aid fieldname value
1 1 c.name 张三
2 1 c.sex 男
3 2 c.name 李四
... ... ... ...C表
cid name sex age
1 王五 女 17
2 赵六 男 15
... ... ... ...
知道aid、cid。用存储过程根据B表的数据怎么修改C表的数据
比如 知道aid=1,cid=1 根据aid查出B表的数据,然后跟据CID修改C表的数据
C表cid =1 的数据结果为
cid name sex age
1 张三 男 17这个要怎么实现 请各位大神指教........
B表 (bid,aid,fieldname,value)
C表 (cid,name,sex,age)
B表数据
bid aid fieldname value
1 1 c.name 张三
2 1 c.sex 男
3 2 c.name 李四
... ... ... ...C表
cid name sex age
1 王五 女 17
2 赵六 男 15
... ... ... ...
知道aid、cid。用存储过程根据B表的数据怎么修改C表的数据
比如 知道aid=1,cid=1 根据aid查出B表的数据,然后跟据CID修改C表的数据
C表cid =1 的数据结果为
cid name sex age
1 张三 男 17这个要怎么实现 请各位大神指教........
update
set a.xx=t.xx...
from 你要更新的表 a inner join #t b on a.主键=b.主键
;WITH t AS (
SELECT aid , [c.name] AS [name] , [c.sex] AS [sex]
FROM (
SELECT [aid] , [fieldname] , [value] FROM [tb]
) a PIVOT ( MAX([value]) FOR [fieldname] IN ([c.name] , [c.sex]) ) pvt
)
UPDATE c
SET c.name=t.[name] , c.sex=t.[sex]
FROM c ,t
WHERE c.aid = b.aid
看不懂
UPDATE c
SET c.name=t.[name] , c.sex=t.[sex]
FROM c ,t
WHERE c.aid = b.aid我这个表有100多列 如果这样更新的话 那太长了
我想把B表的fieldname,value的值查出来,根据aid查出B表的几行数据,在后台处理,返回的值为
"c.name = '张三',c.sex='女'" 把这个字符串传给存储过程
这样我存储过程就能这样写了create proc proc_cUp
@cid int,
@field varchar(1000)
as
update c set @field where cid = @cid
go我想我在后台应该知道怎么处理了 不用SQL了 谢谢各位大神