我有一个表t1和一个表t2.Were,就像在表t1中一样,主约束将处于禁用状态。Primary约束位于列C1,C2上,而表t2没有任何约束。
当我尝试在表t1中启用PK_test constraint时,如果有任何异常(记录违反约束)将保存在表t2中,.Table t1将具有列c1,c2,如下所示。
C1 C2 ROWID
1 2 ABCD
1 2 ABCE
1 2 ABCF
7 8 ABCI表t2将具有包含数据的列ROWID
ROWID
ABCD
ABCE
ABCF因为只有这些违反PK的行
因此,我只想在表t2中保留列C1,C2的min(ROWID)。所以我写了一个查询
delete *
from t2
where ROWID not in(select min(ROWID)
from t1
where ROWID in (select ROWID
from t2)
group by C1,C2);但是上面的查询写的是NULL,也是正确返回1 ROWS(ABCD)的select min(rowed)..查询。
请帮我找出这里到底出了什么问题。
发布于 2016-08-31 17:28:45
在这里,我尝试删除t2.ROWID,它大于具有相同C1和C2的任何t1的min(ROWID
delete t2
where t2."ROWID" > (select min(a."ROWID")
from t1 join t1 a on t1.c1 = a.c1 and t1.c2 = a.c2
where t1."ROWID" = t2."ROWID");发布于 2016-08-31 18:18:00
我会简单地写成:
delete t2
where t2."RowId" not in (select min(t1."RowId")
from t1
group by c1, c2
);https://stackoverflow.com/questions/39245302
复制相似问题