MSSQL使用delete删除满足条件的多条记录

fxd1202 2011-08-17 04:16:22
第一:使用 语句删除记录的时候,如果多条满足的话就返回了:
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
如果要实现其功能,改如何写语句呢。

第二:将 table_name 使用 生成SQL脚本的方式再构造一个相同表结构的新表。我们再使用
delete from new_table_name where 条件语句,又能完成删除多条功能。


求大侠们解释一下啊。
...全文
398 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxd1202 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 guoweifyj 的回复:]
SQL code

第一:使用 语句删除记录的时候,如果多条满足的话就返回了:
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
如果要实现其功能,改如何写语句呢。

可以把子查询放在公用表表达式CTE中引用,从而解决问题。

第二:没看明白
[/Quote]

就是再构造一个相同的表结构,如:create table same_table_name as select * from table_name(尽管此语句在MSSQL中不能实现,但我想你应该明白我要表达的意思)
怪众生太美丽 2011-08-17
  • 打赏
  • 举报
回复

第一:使用 语句删除记录的时候,如果多条满足的话就返回了:
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
如果要实现其功能,改如何写语句呢。

可以把子查询放在公用表表达式CTE中引用,从而解决问题。

第二:没看明白
-晴天 2011-08-17
  • 打赏
  • 举报
回复
用 instead of 触发器。
一缕青烟 2011-08-17
  • 打赏
  • 举报
回复
第一 改成 in, not in

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧