怎么删除多余无关联的数据
例如两个表
表一:用户注册表 Reguser
字段: reg_id,reg_name,reg_time,reg_pass
表二: 用户信息表 UserInfo
字段:u_id,u_regid,u_truename
其他字段省略了,u_regid 为外键 引用注册表的主键
现在问题是 注册表中有多余的信息在用户信息表找不到相关联的数据 这些数据需要删除,请问这个删除语句怎么写?
第二个就是在删除注册表信息时,用户信息表的数据因各种原因没有被删除,请问删除用户信息表无关联的信息怎么写? 请大家帮忙。小弟刚学对此一无所知。
需要两条语句。一个是删除注册表中无关联的数据,另外就是删除信息表中无关联的数据。
------解决方案--------------------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应该是对应的吧?