现有两个表,A表和B表都有共同的字段“bianhao”,其中A表的中没有重复的“bianhao”记录,B表中可能存在重复的“bianhao”记录,现在要删除B表中的在A表中没有的“bianhao”记录!如何做?
如:
A表
id   bianhao
1      001
2      002
3      005B表
id   bianhao
1      001
2      002
3      002
4      003  (该003)在A表中没有,删除)
5      003  (该003)在A表中没有,删除)
6      004  (该004)在A表中没有,删除)实现上面操作如何操作?另外,有没有什么触发类的约束,只要删除了A表的某条记录,自动删除在B表中的相关记录?

解决方案 »

  1.   

    delete b from b left join a on a.bianhao=b.bianhao where a.bianhao is null 
      

  2.   

    ALTER TABLE tb ADD CONSTRAINT `0_38775` FOREIGN KEY (bianhao) REFERENCES ta(bianhao) ON DELETE CASCADE因为你已经有数据,不适合用级联删除,用上述SQL语句清理后再设置级联删除
      

  3.   

    DELETE CASCADE,似乎只能用于InnoDB引擎。楼主需要考虑所使用的引擎类型。