ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 请教多对多关联中间表关系的删除

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

原创 Linux操作系统 作者:seron 时间:2007-11-07 19:21:05 0 删除 编辑
需求如下,多对多中,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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-18

  • 博文量
    6
  • 访问量
    27989