delete语句里怎样嵌套select???

niwniwniw 2004-07-10 09:56:23
我现在有一语句:
delete tbl1

select *
from tbl1 a join tbl2 b on a.work_id=b.work_id
where b.dep like 'AABB'
(表tbl1和tbl2是通过相同的work_id关联起来)
我的本意是想删除 :当dep为'AABB'时tbl1里面的资料。
而select里面where b.dep like 'AABB'作为delete的条件;
但现在这个where里面的条件根本对delete不起作用;
请问:怎样使这个条件起作用?怎么写这个语句?
...全文
2425 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoen 2004-07-13
  • 打赏
  • 举报
回复
楼上的好用.
chinaandys 2004-07-12
  • 打赏
  • 举报
回复
delete t1
where idfield in(
select.............)
go
victorycyz 2004-07-12
  • 打赏
  • 举报
回复

或者tbl2中没有与之wirk_id字段相同的记录。
victorycyz 2004-07-12
  • 打赏
  • 举报
回复

delete tbl1
select a.work_id,b.name from tbl1 a join tbl2 b on a.work_id=b.work_id
where b.dep = 'AABB'

这里其实执行了两句SQL查询,第一句:delete tbl1,在这里,你已经把记录都删除掉了。第二句,才是后面那个select语句,因为全删除了,肯定返回的是空集。


用where子句,删不掉数据,可能仅仅是因为没有等于'AABB'的记录。
niwniwniw 2004-07-12
  • 打赏
  • 举报
回复
我现在语句是上面victorycyz(中海)所说的那样,但where里面的条件根本就不起作用,tbl1里面的数据不能删除;
但我写成"delete tbl1
select a.work_id,b.name from tbl1 a join tbl2 b on a.work_id=b.work_id
where b.dep = 'AABB'"后,where里面的条件 也不起作用,但是tbl1里面的数据全部都删除了
请问这是怎么回事?
zonelive 2004-07-10
  • 打赏
  • 举报
回复
delete from tb where ?? in (select ?? from tb)
pjjia 2004-07-10
  • 打赏
  • 举报
回复
delete tbl1 from tbl1 a join tbl2 b on a.work_id=b.work_id
where b.dep = 'AABB'

victorycyz 2004-07-10
  • 打赏
  • 举报
回复
delete tbl1
from tbl1 a join tbl2 b on a.work_id=b.work_id
where b.dep = 'AABB'
futulove 2004-07-10
  • 打赏
  • 举报
回复
delete tbl1
from tbl1 a join tbl2 b on a.work_id=b.work_id
where b.dep like 'AABB'

34,590

社区成员

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

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