Sql-Server
如何在“IN”語句中使用關鍵字“VALUES”?
我在 sql server 2016
select @@version
Microsoft SQL Server 2016 (SP2-CU15) (KB4577775) - 13.0.5850.14 (X64) Sep 17 2020 22:12:45 版權所有 (c) Microsoft Corporation Enterprise Edition:Windows Server 2012 R2 上基於核心的許可(64 位)數據中心 6.3(內部版本 9600:)(管理程序)
在 sql server 中的一個簡單插入語句中,我有關鍵字
values
例如:
BEGIN TRANSACTION T1 SELECT @@TRANCOUNT INSERT INTO [APCore].[usr].[userBusinessArea] ([businessAreaID] ,[userID]) VALUES (21, 368), (21, 227419) , (21, 99906), (21, 140470) SELECT [1]= @@TRANCOUNT --COMMIT TRANSACTION T1 --ROLLBACK SELECT [2]=@@TRANCOUNT
問題是,在我執行插入之前,我想使用與 相同的邏輯
values
來查明這些記錄中是否已經在表中。否則你可能會得到這個:
我所做的方式是:
select top 10 * from [APCore].[usr].[userBusinessArea] where businessAreaid = 21 and Userid in (368,227419,99906,140470)
這是
after
插入:我在這裡看到了一些例子:SQL Server IN Operator
有沒有一種好的和值得的方式
values
在in
聲明中使用?
一種選擇是引用該
VALUES
條款,就像它實現時一樣。INSERT INTO [APCore].[usr].[userBusinessArea] ([businessAreaID] ,[userID]) SELECT businessAreaID, userID FROM ( VALUES (21, 368), (21, 227419) , (21, 99906), (21, 140470) ) v (businessAreaID, userID) WHERE v.userID NOT IN (368,227419,99906,140470);
另請參閱文件中的範例