现在在SQL里使用delete in无法删除了。为什么?

xlxcn 2009-07-20 04:35:07
今天突然发现,我的一个系统里,用这样的语句不能删除信息,语句如下:
delete from tabneName where id in(2,3,4,5,6)

这样的语句我以前可以用的,今天不知道怎么的,删除不了。

后来把语句放到SQL查询分析器里运行,提示:

服务器: 消息 512,级别 16,状态 1,过程 UserTable,行 18
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。


不知道是什么原因。
...全文
1726 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2009-07-21
  • 打赏
  • 举报
回复
刪除一條記錄時沒問題,有多條記錄時會出錯
中国风 2009-07-21
  • 打赏
  • 举报
回复
語句沒問題,表存在觸發器

如:
create trigger del_tableName on TableName
for delete
as

declare @i int
set @i=(select ID from deleted)
chenyongpan11 2009-07-21
  • 打赏
  • 举报
回复
感觉一天删除语句只能删除指定的,不能一下子删除多条,还有in(, , ,)表示的是一个范围
xlxcn 2009-07-21
  • 打赏
  • 举报
回复
已解决。
xlxcn 2009-07-21
  • 打赏
  • 举报
回复
哦,明白了。我来查查。
cqq_chen 2009-07-20
  • 打赏
  • 举报
回复
触发器问题!仔细查查......
htl258_Tony 2009-07-20
  • 打赏
  • 举报
回复
语句没问题,估计是楼主的表有触发器,才受到相关限制.
SQL77 2009-07-20
  • 打赏
  • 举报
回复
delete from tabneName where CHARINDEX(LTRIM(ID),'2,3,4,5,6')>0
xlxcn 2009-07-20
  • 打赏
  • 举报
回复
我ID是主键,自动编号的,怎么会有两个一样的ID?我改成其他多个不同ID号,都不行。
除非后面只有一条,如:
delete from tablename where id in(3)这样就能删除
-狙击手- 2009-07-20
  • 打赏
  • 举报
回复
你的delete操作触发了触发器了吧,查你 表上的触发器
jjx5373 2009-07-20
  • 打赏
  • 举报
回复
那也不对啊,你用的是SQL 语句,
用企业管理器的时候,会出现问题,语句应该没有问题的.
jjx5373 2009-07-20
  • 打赏
  • 举报
回复
我想,你用的应该是SQL SERVER 2000
如果是的话:
当表中两条记录完全一样的时候, 你做删除操作,他会报这个错误.
xlxcn 2009-07-20
  • 打赏
  • 举报
回复
同样的错误。
我唯一做的就是把升级了一下系统补丁。SQL2000

具体错误:


(所影响的行数为 1 行)


(所影响的行数为 0 行)


(所影响的行数为 3 行)

服务器: 消息 512,级别 16,状态 1,过程 UserTable,行 18
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
--小F-- 2009-07-20
  • 打赏
  • 举报
回复
delete from tabneName where id in('2','3','4','5','6')
fwacky 2009-07-20
  • 打赏
  • 举报
回复

---你写错了吧!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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