日期:2014-05-17  浏览次数:21046 次

怎么删除多余无关联的数据
例如两个表 
表一:用户注册表 Reguser
 字段: reg_id,reg_name,reg_time,reg_pass

表二: 用户信息表 UserInfo
 字段:u_id,u_regid,u_truename

其他字段省略了,u_regid 为外键 引用注册表的主键 

现在问题是 注册表中有多余的信息在用户信息表找不到相关联的数据 这些数据需要删除,请问这个删除语句怎么写?
第二个就是在删除注册表信息时,用户信息表的数据因各种原因没有被删除,请问删除用户信息表无关联的信息怎么写? 请大家帮忙。小弟刚学对此一无所知。


需要两条语句。一个是删除注册表中无关联的数据,另外就是删除信息表中无关联的数据。
sql 语句关联

------解决方案--------------------
1、
delete from Reguser where not exists (select 1 from UserInfo where Reguser.reg_id=UserInfo.U_regid)

2、没看懂


------解决方案--------------------
DELETE
    a
FROM
    UserInfo  AS a
INNER JOIN Reguser AS b ON a.reg_id=b.u_regid
WHERE
    NOT EXISTS ( SELECT
                    1
                 FROM
                    UserInfo
                 WHERE
                    a.reg_id=.u_regid )

------解决方案--------------------
删除之前记得备份数据哦。
------解决方案--------------------
问题一:
delete Reguser
where reg_id not in(select u_regid from UserInfo)


问题二:
删除表UserInfo没有受到任何约束

------解决方案--------------------
有点问题。修改下:

DELETE
    a
FROM
    Reguser AS a
WHERE
    NOT EXISTS ( SELECT
                    1
                 FROM
                    UserInfo
                 WHERE
                    a.reg_id=u_regid )

------解决方案--------------------
那就把上面的delete语句的表顺序反过来....
------解决方案--------------------
delete from UserInfo where not exists (select 1 from Reguser  where Reguser.reg_id=UserInfo.U_regid)


reg_id和U_regid应该是对应的吧?