如何在sql查询中创建drop\u副本?

xfb7svmp  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(223)

这个问题在这里已经有答案了

如何删除sql server中的重复行(23个答案)
9个月前关门了。
Pandas的一个常见操作是

In [14]: import io

In [15]: csv='''\
    ...: a,b
    ...: 1,2
    ...: 1,3
    ...: 2,3
    ...: 3,1
    ...: 3,3'''

In [16]: dt = pd.read_csv(io.StringIO(csv))

In [17]: dt
Out[17]:
   a  b
0  1  2
1  1  3
2  2  3
3  3  1
4  3  3

In [18]: dt.drop_duplicates(subset = ['a'])
Out[18]:
   a  b
0  1  2
2  2  3
3  3  1

但是,如何在sql中执行这一点呢?有没有一个标准的功能或方法来做什么 drop_duplicates(subset = <list>) 做?

编辑

复制功能的工作原理:

In [20]: dt['a'].duplicated()
Out[20]:
0    False
1     True
2    False
3    False
4     True
Name: a, dtype: bool

In [21]: dt.drop_duplicates(subset=['a'])
Out[21]:
   a  b
0  1  2
2  2  3
3  3  1
sg2wtvxw

sg2wtvxw1#

我想你想要:

select a, b
from (select t.*, row_number() over (partition by a order by b) as seqnum
      from t
     ) t
where seqnum = 1;

请注意,sql表表示无序集,与dataframes不同。除非列指定顺序,否则没有“第一”行。
如果不关心行,也可以使用聚合:

select a, min(b) as b
from t
group by a;

相关问题