请求写个sql命令,删除表中某些行的。

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:14:07
问题是这样的:在同一个数据库中
有表A,字段有uid name……
表B,字段有fid uid text……
表A,B中有相同字段uid,数字型的,A中的uid字段内容是顺序编号且不重复的,但被删除过一些行。我想查找如果表B中字段uid的值在表A的uid中不存在,那么删除表B中的此行。
(数据非常多,大约几千行)
这样的命令可以写吗?

delete from 表B where uid not in (select uid from 表A)

delete from 表B where not exists (select 1 from 表A where uid=表B.uid)

可以用上面任意一种方式删除,不过第二个的效率能高一些

Delete From [表B] Where uid Not In (Select uid From [表A])

几千行已经是很少的数据了...

delete from 表B where not exists (select * from 表A where 表A.uid = 表B.uid)

delete from 表B where uid
not exists (select * from 表A where uid=表B.uid)这样就OK了
Delete From [表B] Where uid Not In (Select uid From [表A]) 这种做法也对,不过效率略显低一点,不过你的几千数据是没有多大区别的,你可以写一个函数测测执行时间。随着数据量的增加就不一样了,建议你用第一个

你的两张表没有约束吧?
我觉得这两张表应该建立约束的
这样就可以要删除B表中的记录才能删除A表中同样ID的记录
delete from B where uid not in(select A.uid from A)