kino_s 2023-01-16 10:48 采纳率: 45.5%
浏览 94
已结题

关于#sqlsever#的问题,同一字段下关键词如何批量对调?

数据库:sqlsever2008
续接前个提问,问题是:在找出需要对调的sht码后,也就是字段内对特定关键词两两对调

初始数据如下:

 sht     pcs     index route
1111a    20231a    1    41
1111a    20232a    2    41
1111a    20233a    3    41
2222a    20234a    1    41
2222a    20235a    2    41
2222a    20236a    3    41
3333a    20237a    1    41
3333a    20238a    2    41
3333a    20239a    3    41
4444a    20240a    1    41
4444a    20241a    2    41
4444a    20242a    3    41

在处理后得到需要对调的数据:

sht       pcs   index  route      sht       pcs    index route
1111a    20243a    1    41        2222a    20249a    1    41
1111a    20244a    2    41        2222a    20250a    2    41
1111a    20245a    3    41        2222a    20251a    3    41
3333a    20246a    1    41        4444a    20252a    1    41
3333a    20247a    2    41        4444a    20253a    2    41
3333a    20248a    3    41        4444a    20254a    3    41

我尝试过:
1.replace关键字,但这样替换过后另一半就消失了;如果新建两个临时对象A/B再替换那一次只能对调一张,实际有好多
2.case when then,这东西如果是对调一个sht内的内容比如index可以
(when index 1 than 2
when index 2 than 1 end)这是可以同时对调的,但是现在是对调sht指定不了一个固定内容,不加括号也是另一半没了

目标:将这个表格内sht下的左侧与右侧两两对调,也就是1111a与2222a、3333a与4444a对调以此类推,且需要限定route为41 进行批量更新!

@轻松仁——极简生活

  • 写回答

6条回答 默认 最新

  • heart_6662 2023-01-16 11:10
    关注

    望采纳!!!点击回答右侧采纳即可!!
    题主你这个需求可以使用update语句进行对调

    update table_name
    set sht = (case when sht = '1111a' then '2222a' else '1111a' end),
    pcs = (case when pcs = '20243a' then '20249a' else '20243a' end),
    index = (case when index = '1' then '1' else '1' end),
    route = (case when route = '41' then '41' else '41' end)
    where sht in ('1111a', '2222a')
    and pcs in ('20243a', '20249a')
    
    

    这个语句是在table_name表中,将sht字段值为'1111a'的记录更新为'2222a',将pcs字段值为'20243a'的记录更新为'20249a',index和route字段没有更新,只是做了一个比对而已。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月16日

悬赏问题

  • ¥15 关于Java对接海康威视车牌识别一体机SDK是否需要固定外网的IP?
  • ¥15 Linux扩容时,格式化卡住了:vgdispaly查看卷组信息,没有输出
  • ¥18 关于#ubuntu#的问题:使用背景-工作职责内有七八台ubuntu系统的电脑,平时需要互相调取资料,想实现把这几台电脑用交换机组成一个局域网,来实现指定文件夹的互相调取和写入
  • ¥20 求一个简易射频信号综测仪
  • ¥15 esp8266 tally灯 接收端改为发射端
  • ¥30 Labview代码调用access 数据库,相同代码其中一个调用不出来是为什么
  • ¥15 基于51单片机的交通灯系统,找改程序有点急
  • ¥15 java启动jar包后,运行过程中宕机
  • ¥15 进行LM运算过程中出现了无法识别的问题,具体问题如下图
  • ¥500 高有偿提问!求优化设计微信小程序