首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较ROWID

如何比较ROWID
EN

Stack Overflow用户
提问于 2016-08-31 17:08:08
回答 2查看 1.3K关注 0票数 0

我有一个表t1和一个表t2.Were,就像在表t1中一样,主约束将处于禁用状态。Primary约束位于列C1,C2上,而表t2没有任何约束。

当我尝试在表t1中启用PK_test constraint时,如果有任何异常(记录违反约束)将保存在表t2中,.Table t1将具有列c1,c2,如下所示。

代码语言:javascript
复制
C1   C2 ROWID
1     2 ABCD
1     2 ABCE
1     2 ABCF
7     8 ABCI

t2将具有包含数据的列ROWID

代码语言:javascript
复制
ROWID
ABCD
ABCE
ABCF

因为只有这些违反PK的行

因此,我只想在表t2中保留列C1,C2min(ROWID)。所以我写了一个查询

代码语言:javascript
复制
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)..查询。

请帮我找出这里到底出了什么问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-31 17:28:45

在这里,我尝试删除t2.ROWID,它大于具有相同C1和C2的任何t1的min(ROWID

代码语言:javascript
复制
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");
票数 0
EN

Stack Overflow用户

发布于 2016-08-31 18:18:00

我会简单地写成:

代码语言:javascript
复制
delete t2
    where t2."RowId" not in (select min(t1."RowId")
                             from t1
                             group by c1, c2
                            );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39245302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档