永发信息网

【oracle】delete语句同时删除多张表(在线等)

答案:4  悬赏:40  手机版
解决时间 2021-04-03 05:15
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-04-02 16:46
【oracle】delete语句同时删除多张表(在线等)
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-04-02 17:53
如果你是要删除2长表里的数据,可以分步做啊:
delete from a where a.ida=1;
delete from b where b.idb=1;
commit;
像你那种做法,是不可行的,不符合oracle的语法。oracle只允许从一张表中删除数据。你是不是想删除A表中的数据(B表不变),但要这些数据存在于B表中,可以使用:
DELETe FROM a WHERe (a.ida, a.name) IN (SELECt a.ida, a.name FROM a ,b where a.ida=b.idb);
COMMIT;
这些语句我都在oracle92中测试过,不知道你究竟需要做什么?
全部回答
  • 1楼网友:北方的南先生
  • 2021-04-02 19:49
delete (select a.ida as ida from a inner join b on a.ida = b.idb ) where ida = 1
这样试试看
  • 2楼网友:野慌
  • 2021-04-02 19:27
delete from a where a.ida=1
delete from b where b.idb=1
这样要写两句
请描述你的具体要求
如果你的表的ID字段都是有规律的ida,idb,...即id+表名
则可以这样删除所有表的id表名=1的数据
declare @SqlStr varchar(8000)
select @SqlStr=''
select @SqlStr=@SqlStr+'delete from ['+[name]+']'+' where id['+[name]+']=1'+CHAr(10)
from sysobjects where Xtype=N'U'
exec(@SqlStr)
  • 3楼网友:枭雄戏美人
  • 2021-04-02 19:18
你那样写的是不成立的啊.
这样不就可以了吗?
str=" delete from a where a.ida=1 "
str+="delete from b where b.idb=1 "
兄弟快快吧!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯