永发信息网

SQL UPDATE

答案:5  悬赏:0  手机版
解决时间 2021-07-25 22:00

我有两个表x,y。
x
代码 类型 单价
A y.列1
B y.列2
C y.列3
D y.列1
y
代码 列1 列2 列3
A 1.5 2.5 3
B 2.5 1.5 2.8
C 3 2.5 1.8
D 4.5 3.6 7.2
想通过SQL语句UPDATE更改 x表的A单价为1.5
B单价为1.5
C单价为1.8
D单价为4.5

最佳答案

X表中有 单价的字段 直接


update x表 set 单价='1.5' where 代码='A'

全部回答

这是典型的列转行

提供思路:先列转行(实例网上一大把)、再group by 取min 就OK

最好用递归查询,固定的case三种,增加了第四种又要改代码,

木鱼吖的也不好好的给别人说,搪塞别人:

declare @SQL varchar(max) set @SQL=''

SELECt @SQL=@SQL+' UPDATE x set 单位=' + 类型+ ' from x join y on x.代码=y.代码 where x.类型='''+类型+'''' from (select distinct 类型 from X)b PRINT @SQL exec (@SQL)

update x set 单价= case when 类型='y.列1' then (select 列1 from y where y.代码=x.代码) when 类型='y.列2' then (select 列2 from y where y.代码=x.代码) when 类型='y.列3' then (select 列3 from y where y.代码=x.代码)

else ''

end

没测试过,自以为是的,如果错了告诉我。

你这个更新比较麻烦,建议用程序逻辑来实现,或用多条语句合并起来,否则可能很麻烦。

比如一次执行下面三条语句,可以达到你的要求:

update x set 单价=(select 列1 from y where y.代码=x.代码) where x.类型='y.列1' update x set 单价=(select 列2 from y where y.代码=x.代码) where x.类型='y.列2' update x set 单价=(select 列3 from y where y.代码=x.代码) where x.类型='y.列3'

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么男士牌子的祛除黑眼圈和眼袋效果比较好
有没有吉林一区DNF玩家 我想找个师父
我这个月的月经没来
【维客】网上兼工网上赚钱可信吗?
房地产还会继续涨价吗?
《LOST》什么时候出来啊?
有什么好的学习方法。?
人一天中的第一支烟应该在什么时候抽…
对待一个不守信用的人你要怎样做?
十三分之七除以七加七分之一乘十三分之一加七
请问成都什么地方有正宗新鲜双流兔头买?
自定义空间主页
人那种才叫有前途
多维葡萄糖用热水还是冷水
物理 机械运动
推荐资讯
我现在一家做太阳能电池铝浆和银浆的企业,刚
从安康到汉中班车一天几趟啊?票价多少啊?几
MP4反复重启
QQ秀中的魔法卡片有什么用
晚上用手机登Q早上手机再登入却要输验证码是
请大家帮帮忙解释下:Happy valentine's
我顶撞了!老师!咋样写保证可以让老师觉得我
英语翻译En ti pensando me duermo,pensando
有什么名字好听的吗 要有“守护” 繁体的也可
为什么我进Internet Explorer在开打360安全浏
手机怎么用耳机线对讲?
现在有什么好听的流行歌曲啊,谁告诉我啊!!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?