请教多对多关联中间表关系的删除

需求如下,多对多中,A表USER
user_id  int(10)
user_name varchar(20)
,B表(中间表)USER_GROUP,
user_id  int(10)
group_id int(10)
C表GROUP,
group_id int(10)
group_name varchar(20)

在开发当中,平常的多对多操作,大多是对它进行级联操作,如删除A表就级联删除B表及C表的关联关系及记录.现在项目中有一需求:[B] 要求删除指定A表user或者C表中的group表字段对应条件在中间表B表user_group的关联关系.
如删除A表user_id=888与C表中groupName="admin" 对应的关联关系,只删除该记录对应B表中user_group中的记录.A表与C表记录保留.
请教下最优性能的SQL写法谢谢.
[/COLOR] [/B]

补充下类似的需求:
类似于
delete from user_group userGroup where exists (select * from
groups group where userGroup.group_id=group.group_id
and group.groupName="admin"
)
我现在要的是关联三个表.A、B、C表通过where条件来限定删除关系,这个限定条件可以是A表或者C表中的其它字段,而不是它们的ID。要不然就得事实先得知要B中间表中的需要删除的userId及groupid这样就需要去查询两次来获得id再来删A与C对应中间表关系
[B]
如要删除指定用户名为test用户与指定组名为admin的对应关系
where条件如下
user.user_name='test' and groups.groupName="admin"
通过这个条件来只删除B表(中间表)user_groups的记录.请问sql该怎么写.
[/B]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/404101/viewspace-157000/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/404101/viewspace-157000/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值