首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将内连接转换为delete记录

将内连接转换为delete记录
EN

Stack Overflow用户
提问于 2015-08-16 18:42:32
回答 3查看 81关注 0票数 0

我有以下疑问:

代码语言:javascript
复制
use VIM_VCDB;

select VPX_ENTITY.NAME as "VM Name",  VPX_VM.FILE_NAME as "File Name / Path"
From VPX_VM inner join VPX_Entity 
on vpx_vm.ID = vpx_entity.ID
order by VPX_entity.name

我想使用此记录同时从两个表中删除返回的数据集。这个是可能的吗?

EN

回答 3

Stack Overflow用户

发布于 2015-08-16 18:52:46

从VPX_VM中删除vpx_vm.ID = vpx_entity.ID的VPX_Entity ...

票数 0
EN

Stack Overflow用户

发布于 2015-08-16 20:59:11

delete语句仅从一个表中删除行。但是,您可以将它们包装在一个事务中,以便它们同时“生效”:

代码语言:javascript
复制
begin transaction twodeletes;

    select vpx_vm.ID
    into #deleteids
    From VPX_VM inner join
         VPX_Entity 
         on vpx_vm.ID = vpx_entity.ID;

    delete from VPX_VM where id in (select id from #deleteids);
    delete from VPX_Entity where id in (select id from #deleteids);

commit transaction twodeletes;
票数 0
EN

Stack Overflow用户

发布于 2015-08-16 21:07:33

无法同时删除。尽管您可以使用以下变通方法:

  1. 将标志添加到表中。设置为是,则标记为删除。然后,您可以通过过滤掉del_flag='Y‘记录来从表中删除。

更新标志set del_ VPX_VM =‘Y’where exists (select 1 VPX_Entity vpx_vm.ID = vpx_entity.ID );

更新标志set del_ VPX_ENTITY =‘Y’where exists (select 1 VPX_VM vpx_vm.ID = vpx_entity.ID );

Delete from where del_ del_flag='Y';

  • Get =‘Y’;Delete from VPX_VM where VPX_ENTITY将查询返回的数据删除到另一个表tmp1中,然后逐条删除这两个表中的记录

delete from VPX_VM where ID in (select Tmp1 in vpx_vm_ID );

delete from VPX_Entity where ID in (select vpx_entity_id in tmp1);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32034158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档