SQL Server 2012 中 Update FROM子句
首先说明一下需求以及环境 创建Table1以及Table2两张表,并插入一下数据 USE AdventureWorks2012 ; GO GO GO decimal GO NOT GO 1 , 20.0 ),( 2 , 30.0 ); 1 , 0.1 ),( 2 , 0.2 ); 如何通过一个update语句直接使Table2得到以下结果(仅是奇葩业务需求,请勿
首先说明一下需求以及环境
创建Table1以及Table2两张表,并插入一下数据
USE AdventureWorks2012;
GO
GO
GO
decimal
GO
NOT
GO
1, 20.0),(2, 30.0);
1, 0.1),(2, 0.2);
如何通过一个update语句直接使Table2得到以下结果(仅是奇葩业务需求,请勿吐槽)
可以看出请产生的结果集如使用SELECT 仅需使用简单INNER JOIN来获得
SELECT dbo.Table2.ColA,
dbo.Table2.ColB
FROM dbo.Table2
ON (dbo.Table2.ColA = dbo.Table1.ColA);
而对于SQL Server 因为UPDATE 具有From子句 可以写出如下语句,但强烈不建议使用的此方法来进行
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
ON (dbo.Table2.ColA = dbo.Table1.ColA);
官方解释如下
Use caution when specifying the FROM clause to provide the criteria for the update operation. The results of an UPDATE statement are undefined if the statement includes a FROM clause that is not specified in such a way that only one value is available for each column occurrence that is updated, that is if the UPDATE statement is not deterministic.
指定 FROM 子句为更新操作提供条件时务须小心。 如果 UPDATE 语句包含了未指定每个更新列的位置只有一个可用值的 FROM 子句(换句话说,,如果 UPDATE 语句是不确定性的),则其结果将不明确。
Support for use of the READUNCOMMITTED and NOLOCK hints in the FROM clause that apply to the target table of an UPDATE or DELETE statement will be removed in a future version of SQL Server. Avoid using these hints in this context in new development work, and plan to modify applications that currently use them.
在 SQL Server 的未来版本中,将不再支持在 FROM 子句中使用应用于 UPDATE 或 DELETE 语句目标表的 READUNCOMMITTED 和 NOLOCK 提示。 请避免在新的开发工作上下文中使用这些提示,并计划修改当前使用它们的应用程序。
个人建议使用MERGE来实现此项功能
AS source (ColA,COlB)
ON (target.ColA = source.ColA)
WHEN MATCHED
= target.ColB + source.ColB
;
有兴趣的同学可以将Table1的数据更改如以下
TRUNCATE TABLE table1;
2, 10.0), (1, 20.0),(1, 40.0),(2, 30.0);
使用Update后Table2的结果(注意这是一个未确定性的结果集,不代表可以运行处结果结果一定是正确的)
使用MERGE是结果,这个错误信息很好的阐述的这个错误的原因
Msg 8672, Level 16, State 1, Line 1

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Google 크롬은 세계에서 가장 인기 있는 브라우저 중 하나이며 많은 사용자는 이를 Windows PC의 기본 브라우저로 사용하는 것을 선호합니다. Chrome은 탐색 경험을 즐겁고 쉽게 만드는 다양한 기능을 제공하므로 여전히 가장 신뢰할 수 있는 브라우저 중 하나입니다. 그러나 다른 브라우저와 마찬가지로 Chrome에도 고유한 단점이 있으며 가장 필요할 때 버그와 결함이 발생하기 쉽습니다. 이러한 오류 중 하나는 Google Chrome 업데이트를 확인하는 동안 발생하는 오류 코드 3: 0x80040154입니다. 오류 메시지는 "업데이트를 확인하는 동안 오류가 발생했습니다. 업데이트 확인을 시작하지 못했습니다(오류 코드 3: 0x80080005) 또는 (오류

Visual Studio Code(VSCode)를 사용 중이고 자동 소프트웨어 업데이트를 비활성화하는 방법과 해당 확장의 자동 업데이트를 비활성화하는 방법을 고려하고 있다면 이 문서를 읽어보세요. VSCode를 자주 사용하지 않고 오랜 시간 후에 편집기를 열고 자동 업데이트를 활성화하려는 경우 이 문서에서도 이에 대한 지침을 제공합니다. VSCode 자동 업데이트를 활성화하거나 비활성화하는 다양한 방법을 자세히 논의하겠습니다. 목차 방법 1: 설정을 사용하여 VSCode 자동 업데이트 활성화/비활성화 1단계: VS Code를 열고 왼쪽 하단에 있는 기어 모양 기호를 클릭합니다. 2단계: 나타나는 목록에서 설정을 클릭하세요. 3단계: 검색창에 업데이트를 입력하고 Enter 키를 누르세요. 업데이트 찾기: 패턴 4

WindowsServerBackup은 WindowsServer 운영 체제와 함께 제공되는 기능으로, 사용자가 중요한 데이터 및 시스템 구성을 보호하고 중소기업 및 대기업 수준의 기업에 완벽한 백업 및 복구 솔루션을 제공하도록 설계되었습니다. Server2022 이상을 실행하는 사용자만 이 기능을 사용할 수 있습니다. 이 문서에서는 WindowsServerBackup을 설치, 제거 또는 재설정하는 방법을 설명합니다. Windows Server 백업을 재설정하는 방법 서버 백업에 문제가 있거나 백업에 너무 오랜 시간이 걸리거나 저장된 파일에 액세스할 수 없는 경우 Windows Server 백업 설정을 재설정하는 것을 고려할 수 있습니다. Windows를 재설정하려면

여러 번의 사전 릴리스 이후 KDE 플라즈마 개발 팀은 2월 28일 처음으로 Qt6 프레임워크를 사용하는 Linux 및 BSD 시스템용 데스크탑 환경 버전 6.0을 공개했습니다. KDE Plasma 6.1에는 이제 여러 가지 새로운 기능이 포함되어 있습니다.

win10 시스템을 사용하다 보면 가끔 컴퓨터가 멈추는 상황이 발생합니다. 그런 다음 백그라운드 프로세스를 확인하면 Microsoft 호환성 원격 측정 프로세스가 특히 많은 양의 리소스를 차지하는 것을 발견합니다. 사용자는 타사 보호 소프트웨어를 제거한 다음 클린 부팅을 시도하여 작동할 수 있습니다. 이 사이트에서는 Microsoft 호환성 원격 측정의 높은 CPU 사용량에 대한 솔루션을 사용자에게 주의 깊게 소개합니다. Microsoftcompatibilitytelemetry의 높은 CPU 사용량에 대한 해결 방법 방법 1: 타사 보호 소프트웨어를 제거한 후 시도

SQLUPDATE 문 Update 문은 테이블의 데이터를 수정하는 데 사용됩니다. 구문은 다음과 같습니다. UPDATE 테이블 이름 SET 열 이름 = 새 값 WHERE 열 이름 = 특정 값 "Person" 테이블: LastNameFirstNameAddressCityGatesBillXuanwumen10BeijingWilsonChamps-Elysees 특정 행의 열 업데이트 UPDATEPerson SETFirstName="Fred" WHERELastName="Wilson" 결과: LastNa

Microsoft는 Windows Server 빌드 26040 버전을 출시하면서 제품의 공식 이름을 Windows Server 2025로 발표했습니다. Windows11WindowsInsiderCanaryChannel 버전 build26040도 출시되었습니다. 일부 친구들은 수년 전에 누군가 Windows NT를 워크스테이션 모드에서 서버 모드로 성공적으로 전환하여 다양한 버전의 Microsoft 운영 체제 간의 공통점을 보여주었다는 것을 아직도 기억할 것입니다. 마이크로소프트의 현재 서버 운영체제 버전과 윈도우 11 사이에는 뚜렷한 차이가 있지만, 세부 사항에 주목하는 사람들은 윈도우 서버가 왜 브랜드를 업데이트했는지,

Fitbit Ace LTE는 지난 5월 공식 출시되었지만 현재는 미국에서만 사용할 수 있습니다. 스마트워치는 특히 어린이를 대상으로 하며, 보다 활동적인 라이프스타일을 통해 게임에 대한 보상을 받을 수 있고, 부모는 항상 자녀의 활동을 모니터링할 수 있습니다.
