Chinaunix

标题: 如何删除不符合约束条件的记录? [打印本页]

作者: eaglec83    时间: 2015-08-17 17:21
标题: 如何删除不符合约束条件的记录?
请教一条sql语句:

如何删除不符合某唯一性约束条件的记录?

比如有一个表tableA,列名: tenant_id, id, subnet_id, dst_cidr
唯一性约束条件为: unique(tenant_id, dst_cidr)

现在数据里有一些记录不符合该条件, 需要删除这类记录
请问一下sql语句怎么写?
作者: lyhabc    时间: 2015-08-17 22:46
不符合唯一性约束? 为啥还能插入数据库?
可以这样,新建一个表tableB,跟tableA表的表结构一样,唯一性约束也一样
然后把tableA的数据导入到tableB,这样不符合唯一性约束的记录就会过滤掉,然后改表名
tableA- 》tableA_T
tableB-》 tableA

作者: eaglec83    时间: 2015-08-21 11:50
哦,没说清楚
是重新修改数据库
因此现有的记录可能不符合修改后的约束条件

不过已经找到方法了,不用这么麻烦
select * fromtableA where 列名A not in (select 列名A from accesslists group by 约束列A,约束列B);
因为delete不能用子查询,因此写个循环把找出来的记录删除




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2