sql—选择第一个表中的所有行,第二个表中的第一个除外

w6mmgewl  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(378)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

11个月前关门了。
改进这个问题
我试图找出一种方法,当行重复时,从第一个表中选择除第二个表中第一个出现的行以外的所有行。
例如,
表1:

ABC
ABC
DEF
GHJ
GHJ

表2:

ABC
GHJ

预期结果(来自第一个表):

ABC
DEF
GHJ

所以第一个和第一个ghj从第一个表中删除。

csbfibhn

csbfibhn1#

你需要使用 row_number() 要处理此问题:

select t1.*
from (select col, row_number() over (partition by col order by col) as seqnum
      from t1
     ) t1 left join
     (select col, row_number() over (partition by col order by col) as seqnum
      from t2
     ) t2
     on t1.name = t2.name and t1.seqnum = t2.seqnum
where t2.name is null;

注意:这将返回任意名称。sql表表示无序的集合,因此表中没有“第一”行,除非列指定顺序。如果你有一个订购的想法,那么就用它来订购 order by .
此外,这允许在 t2 所有这些都将从 t1 如果有的话。

相关问题