奔驰c coupe报价:如何删除SQL里的记录,A表根据B表里的字段有无来决定是否删除A表中的内容

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 17:32:47
表A里有A1、A2、A2字段
表B里有B1、B2、B3字段
表A的A1关联表B的B1(就是说A1是2的话,B1也会是2)
现在是这样的,要删除A表中的记录,如果在B表的B1字段里面没有与A表的A1字段相对应的数据,那就把A表中没有对应的数据删除
怎么办啊???好难啊!!!谢谢!!!

-------------听我说这可以在创建 B 表的过程中完成!---------------

1。B表的B1列是外键, 参照A表A1列(B1`与A1类型相同)

2。触发器当A1列删除某值时,B1列跟随删除相同值

是这意思吧?

代码:(A表自己建(A1列为主键,B表如下)

create talbe B(
B1 int,
B2 int,
B3 int,
FOREIGN KEY(B1) REFERENCES A(A1) ON DELETE CACADE ON UPDATE CASCADE);

外键(B1列) 参照A表(A1列) 当删除时跟随 当更改时跟随

DELETE FROM A WHERE a1 NOT IN(SELECT b1 FROM B);
就可以了,
请操作前备份数据,以免上面的语句让你错误的丢失数据!

楼上给的语句是一下子删除所有的.
如果要单个的删除,可能要用到触发器,建议楼主去看看相应的章节.
这实际上是个完整性约束的删除,如果楼主的两个表做了主外键约束以后,一般DBMS会自动检查删除的,当然SQL语句要写清楚正确的删除方式,这个语句格式一般和使用的DBMS有关系了.

delete from A where A1 not in(select B1 from B)