Sql 从Select中的位置删除,Select中不会有结果删除任何内容吗?
我在存储过程中使用了一些Sql 从Select中的位置删除,Select中不会有结果删除任何内容吗?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在存储过程中使用了一些Delete语句来删除其他表中的一些子记录,并最终删除传递给存储过程的ID 我关心的是,如果与Delete一起使用的select语句中有一个不返回任何内容,会发生什么情况,这会删除该表中的任何内容吗 范例 DELETE FROM [tblPurchases] WHERE [ID] IN (SELECT [ID] FROM @PurchaseIDs) 在这种情况下(从您的示例中),当SELECT[ID]from@PurchaseIDs不会返回任何内容时,将不会从tblp
Delete
语句来删除其他表中的一些子记录,并最终删除传递给存储过程的ID
我关心的是,如果与Delete
一起使用的select语句中有一个不返回任何内容,会发生什么情况,这会删除该表中的任何内容吗
范例
DELETE FROM [tblPurchases]
WHERE [ID] IN (SELECT [ID] FROM @PurchaseIDs)
在这种情况下(从您的示例中),当SELECT[ID]from@PurchaseIDs
不会返回任何内容时,将不会从tblpources
中删除任何内容,因为ID In(empty_set)
条件将不满足
顺便说一下,您可以自己轻松检查,例如:
declare @t1 table (ID int)
insert into @t1 (ID)
select 1
union all
select 2
union all
select 3
declare @t2 table (ID int)
insert into @t2 (ID)
select 1
delete from @t1 where ID in (select ID from @t2 where ID > 1)
select * from @t1
在这种情况下(从您的示例中),当SELECT[ID]from@PurchaseIDs
不会返回任何内容时,将不会从tblpources
中删除任何内容,因为ID In(empty_set)
条件将不满足
顺便说一下,您可以自己轻松检查,例如:
declare @t1 table (ID int)
insert into @t1 (ID)
select 1
union all
select 2
union all
select 3
declare @t2 table (ID int)
insert into @t2 (ID)
select 1
delete from @t1 where ID in (select ID from @t2 where ID > 1)
select * from @t1
答案是否定的,不会删除任何内容。空集合中没有任何内容,因此不会删除任何内容 答案为否,不会删除任何内容。空集合中没有任何内容,因此不会删除任何内容 空集与任何其他类型的集一样有效。在基于集合的语言中,您不应该期望以任何特殊方式处理它们。空集合与任何其他类型的集合一样有效。在基于集合的语言中,您不应该期望以任何特殊方式对待它们。