SQL UPDATE 语句在两行中切换两个值 [英] SQL UPDATE statement to switch two values in two rows

查看:65
本文介绍了SQL UPDATE 语句在两行中切换两个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 SQL Server 交换两行中的两个值.让我展示一下:

I'm using SQL Server to swap two values in two rows. Let me show:

[ord] [name]
1     John
4     Jack
7     Pete
9     Steve
11    Mary

比如说,我需要交换Pete"和Steve"的 [ord] 数字才能使这张桌子像这样:

Say, I need to swap [ord] numbers for "Pete" and "Steve" to make this table to be like so:

[ord] [name]
1     John
4     Jack
9     Pete
7     Steve
11    Mary

这似乎是一项微不足道的任务,但我似乎无法为其编写 SQL UPDATE 语句.

This seems like a trivial task but I can't seem to write an SQL UPDATE statement for it.

推荐答案

如果 'Peter''Steve' 在您的表中是唯一的,则这样做:

If 'Peter' and 'Steve' are unique in your table, this will do:

UPDATE TableX
SET ord = ( SELECT MIN(ord) + MAX(ord) 
            FROM TableX 
            WHERE name IN ('Peter', 'Steve')
          ) - ord
WHERE name IN ('Peter', 'Steve')

或(由@Erwin 改进):

or (improved by @Erwin):

UPDATE TableX
SET ord = ( SELECT SUM(ord) 
            FROM TableX 
            WHERE name IN ('Peter', 'Steve')
          ) - ord
WHERE name IN ('Peter', 'Steve')

这篇关于SQL UPDATE 语句在两行中切换两个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆