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不能用子查询,因此写个循环把找出来的记录删除
页: [1]
查看完整版本: 如何删除不符合约束条件的记录?