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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Google Chrome ialah salah satu pelayar paling popular di dunia dan ramai pengguna lebih suka menggunakannya sebagai penyemak imbas lalai pada PC Windows mereka. Chrome menawarkan pelbagai ciri yang menjadikan pengalaman menyemak imbas menyeronokkan dan mudah, dan oleh itu, ia kekal sebagai salah satu penyemak imbas yang paling dipercayai. Tetapi, seperti mana-mana penyemak imbas lain, malah Chrome mempunyai kelemahannya sendiri, dan ia juga terdedah kepada pepijat dan gangguan apabila anda amat memerlukannya. Satu ralat sedemikian ialah Kod Ralat 3: 0x80040154, yang berlaku semasa menyemak kemas kini Google Chrome. Mesej ralat berbunyi "Ralat berlaku semasa menyemak kemas kini. Semakan kemas kini gagal dimulakan (Kod ralat 3: 0x80080005) atau (Ralat

Jika anda menggunakan Kod Visual Studio (VSCode) dan memikirkan cara untuk melumpuhkan kemas kini perisian automatiknya dan cara melumpuhkan kemas kini automatik sambungannya, kemudian baca artikel ini. Jika anda tidak kerap menggunakan VSCode, buka editor selepas tempoh yang lama dan ingin mendayakan kemas kini automatik, artikel ini juga akan membimbing anda berbuat demikian. Mari kita bincangkan secara terperinci cara berbeza untuk mendayakan atau melumpuhkan kemas kini automatik VSCode. Jadual Kandungan Kaedah Satu: Gunakan Tetapan untuk Mendayakan/Lumpuhkan Kemas Kini Automatik VSCode Langkah 1: Buka Kod VS dan klik simbol berbentuk gear di sudut kiri bawah. Langkah 2: Klik Tetapan dalam senarai yang muncul. Langkah 3: Taip kemas kini dalam bar carian dan tekan enter. Cari Kemas Kini: Corak 4

WindowsServerBackup ialah fungsi yang disertakan dengan sistem pengendalian WindowsServer, direka untuk membantu pengguna melindungi data penting dan konfigurasi sistem, serta menyediakan penyelesaian sandaran dan pemulihan yang lengkap untuk perusahaan peringkat kecil, sederhana dan perusahaan. Hanya pengguna yang menjalankan Server2022 dan lebih tinggi boleh menggunakan ciri ini. Dalam artikel ini, kami akan menerangkan cara memasang, menyahpasang atau menetapkan semula WindowsServerBackup. Cara Menetapkan Semula Sandaran Pelayan Windows Jika anda mengalami masalah dengan sandaran pelayan anda, sandaran mengambil masa terlalu lama, atau anda tidak dapat mengakses fail yang disimpan, maka anda boleh mempertimbangkan untuk menetapkan semula tetapan sandaran Pelayan Windows anda. Untuk menetapkan semula Windows

Apabila kita menggunakan sistem win10, kita kadang-kadang menghadapi situasi di mana komputer menjadi tersekat Kemudian apabila kita menyemak proses latar belakang, kita mendapati bahawa proses telemetri keserasian Microsoft mengambil jumlah sumber yang tinggi. Pengguna boleh cuba menyahpasang perisian perlindungan pihak ketiga dan kemudian mencuba but bersih untuk beroperasi Biarkan tapak ini dengan teliti memperkenalkan kepada pengguna penyelesaian kepada penggunaan CPU yang tinggi bagi Microsoftcompatibilitytelemetry. Penyelesaian kepada penggunaan CPU yang tinggi bagi Microsoftcompatibilitytelemetry Kaedah 1: Cuba selepas menyahpasang perisian perlindungan pihak ketiga

Selepas beberapa prakeluaran, pasukan pembangunan KDE Plasma melancarkan versi 6.0 persekitaran desktopnya untuk sistem Linux dan BSD pada 28 Februari, menggunakan rangka kerja Qt6 buat kali pertama. KDE Plasma 6.1 kini hadir dengan beberapa ciri baharu t

Sempena mengeluarkan versi Windows Server binaan 26040, Microsoft mengumumkan nama rasmi produk: Windows Server 2025. Turut dilancarkan ialah versi Windows11WindowsInsiderCanaryChannel build26040. Sesetengah rakan mungkin masih ingat bahawa bertahun-tahun yang lalu seseorang berjaya menukar Windows NT daripada mod stesen kerja kepada mod pelayan, menunjukkan persamaan antara pelbagai versi sistem pengendalian Microsoft. Walaupun terdapat perbezaan yang jelas antara versi semasa sistem pengendalian pelayan Microsoft dan Windows 11, mereka yang memberi perhatian kepada butiran mungkin tertanya-tanya: mengapa Windows Server mengemas kini jenama,

Pernyataan SQLUPDATE Pernyataan Kemas kini digunakan untuk mengubah suai data dalam jadual. Sintaksnya adalah seperti berikut: KEMASKINI nama jadual SET nama lajur = nilai baharu DI MANA nama lajur = nilai tertentu jadual "Orang": LastNameFirstNameAddressCityGatesBillXuanwumen10BeijingWilsonChamps-Elysees Kemas kini lajur dalam baris tertentu UPDATEPerson SETFirstName="NamesulWHERELast"

Dalam MySQL, anda boleh menggunakan pernyataan UPDATE untuk mengubah suai dan mengemas kini data dalam satu atau lebih jadual. Artikel berikut akan membantu anda meneroka butiran penggunaan UPDATE dalam MySQL Saya harap ia akan membantu anda.
