gpt4 book ai didi

sql - 在没有第三个变量的情况下切换SQL Server中两个字段/列的值

转载 作者:行者123 更新时间:2023-12-02 11:20:16 25 4
gpt4 key购买 nike

由于在导入名为 CUSTOMERS 的测试表时出现错误,我发现自己需要切换 SQL Server 中两列的值。

我错误地将 LASTNAME 和 FIRSTNAME 的相应值导入到相反的字段中(即,客户的姓氏被导入到名字中,反之亦然)。为了解决这个问题,我在 SQL Server 2008 R2 中运行了以下查询,当然并不指望它能够工作:

UPDATE CUSTOMERS
SET LASTNAME=FIRSTNAME, FIRSTNAME=LASTNAME

令人惊讶的是,它成功了!我所拥有的有限的编程经验(高中,一些大学类(class))始终遵循这样的范式:切换两个值需要存在第三个变量来“保存”其中一个初始值的值。换句话说,我预计必须运行以下查询:

UPDATE CUSTOMERS
SET SOMEOTHERFIELD = LASTNAME
SET LASTNAME = FIRSTNAME
SET FIRSTNAME = SOMEOTHERFIELD

这种行为是否只在 SQL Server 2008 R2 中出现,或者这是否代表了我所遗漏的关系理论的其他一些基本方面?

最佳答案

这是因为更新的工作方式:

在set子句中构造一个伪表。此表中的行是通过将原始行中未提及的列中的值复制到新行来构建的。这些列是一次性分配的。也就是说,工作单元是一行,而不是一次一列。最后一步是删除旧行并插入新行。在内部,更新是选择、删除、插入。

关于sql - 在没有第三个变量的情况下切换SQL Server中两个字段/列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7756038/

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