【问题标题】:Using SQL to filter specific value and then remove duplicate row使用 SQL 过滤特定值,然后删除重复行
【发布时间】:2020-05-29 03:48:52
【问题描述】:

假设我在 access 数据库中有一个名为“ABC”的表,其设置如下:

Des Date Mid ... ISIN order 
 A.  B.   C. ...  D.    E
 F.  G.   H  ...  I.    J
 K.  L.      ...  N.    O
 P.  Q.      ...  S.    O
 L.  I.   U. ...  I.    P 

我需要先从'Mid'列中选择所有空单元格,然后如果'order'列的值重复,则删除重复的行,只留下一条记录,这样'Mid'列中的所有空单元格都会有“订单”列中没有重复值

*我的表中没有主键也没有唯一标识符

我想要的结果:

 Des Date Mid ... ISIN order 
 A.  B.   C. ...  D.    E
 F.  G.   H  ...    I.    J
 K.  L.      ...    N.   O 
 L.  I.   U. ...     I.    P 

现在,在“Mid”列中选择的空单元格,“order”列中不再有重复值

我的数据库太大了,只能模拟这张表做参考,这个推荐的SQL语句是什么?

【问题讨论】:

  • 编辑您的问题并显示您想要的结果。表有主键吗?您只是想要select 查询还是删除数据?
  • 我只能想到使用一个选择查询来选择列“订单”下的所有值,以便在“中”列中为空,但是我不知道为什么要删除

标签: sql ms-access duplicates


【解决方案1】:

假设您的一个或多个列是主键,您可以使用:

delete from t
   where t.Mid = "" and
         t.des > (select min(t2.des)
                  from t as t2
                  where t2.Mid = t.Mid and
                        t2.Order = t.Order
                 );

这里任意假设des是主键。

【讨论】:

  • @chinshinglam 。 . .您需要一组唯一的列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 2020-07-08
  • 2022-01-07
  • 2021-06-20
相关资源
最近更新 更多