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 请上面代码做什么处理或什么混淆
  • ¥15 英雄联盟自定义房间置顶
  • ¥15 W5500网线插上无反应
  • ¥15 如何用字典的Key,显示在WPF的xaml中
  • ¥15 weautomate读取Excel表格信息然后填写到网页一直报错,如何解决?
  • ¥15 C#如何在Webview2中获取网页验证码
  • ¥15 esp32烧录失败,具体情况在图片上
  • ¥15 selenium安装报错
  • ¥15 在node.js中无法安装yarn
  • ¥15 python程序修改