gpt4 book ai didi

sql - 从存在的位置删除(选择...)删除所有行

转载 作者:行者123 更新时间:2023-12-02 03:55:10 25 4
gpt4 key购买 nike

我想删除从 select 语句返回的表中的行。

这是一个它不起作用的简化示例。

declare @t1 table(a int, b int, c int)

insert into @t1(a,b,c) select 1, 10, 1
insert into @t1(a,b,c) select 1, 5, 2

select ta.a, ta.b, ta.c
from @t1 ta
join @t1 tb on ta.a = tb.a
where ta.c < tb.c

delete from @t1
where exists (select ta.a, ta.b, ta.c
from @t1 ta
join @t1 tb on ta.a = tb.a
where ta.c < tb.c)

select * from @t1

这是输出,您可以看到选择仅选择一行,但删除会删除所有内容

results

最佳答案

问题在于您正在使用EXISTS

EXISTS 仅评估是否有结果,并且由于您的语句返回记录,因此您实际上是在说:DELETE @T1 WHERE (TRUE)

尝试使用这个:

Delete  ta
From @t1 ta
Join @t1 tb On ta.a = tb.a
Where ta.c < tb.c

关于sql - 从存在的位置删除(选择...)删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44180964/

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