gpt4 book ai didi

SQL:交换列值

转载 作者:行者123 更新时间:2023-12-02 17:55:28 36 4
gpt4 key购买 nike

想要澄清一些有关 SQL 内部原理的概念。

假设我有一张 table :

---------tblXY-----------
X int
Y int

现在它的记录为:

X Y
---
1 4
2 3
3 2
4 1

我希望结果表是:

X Y
---
4 1
3 2
2 3
1 4

所以我将查询写为:

UPDATE tblXY   
SET [X] = Y
,[Y] = X

并得到了所需的结果。

但是这是怎么发生的呢?我的意思是我将 X 的值设置为 Y 的当前值,并且此刻我将 Y 的值设置为 X 的值。

最佳答案

这是因为这些操作是单个原子操作 - 在完成任何分配之前首先读取 XY 的当前值。

所以没那么多:

for every row:
set x = y
set y = x

但更像是:

for every row:
set tmpx = x
set tmpy = y
set x = tmpy
set y = tmpx

请记住,这只是概念 View 。它可能在幕后效率更高。

如果没有这个,您就必须自己为每一行存储临时数据,或者只是重命名列:-)

关于SQL:交换列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190434/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com