【问题标题】:How to remove the duplicate rows by using single column in SQL Server如何在 SQL Server 中使用单列删除重复行
【发布时间】:2018-05-05 03:31:00
【问题描述】:

我想删除表中的重复行。有一个独特的列dataframeid。根据dataframeid,我要删除重复记录

相同的记录显示 5 次。

表格 - OLTMS_5B0395

样本数据

id  DataFrameId DId OT  WT  AT  RC  YC  BC  RV  YV  BV  Oa  Aa  Gt  G   M   P   S   Ot  O   FCNT    RSSI    SF  SNR Rec
2391    1525345797494   4   0   0   35  338 333 664 245 244 245 0   0   0   0   0   0   0   0   0   1243    -92 12  -18 2018-03-05 16:39:00
2459    1525345797494   4   0   0   35  338 333 664 245 244 245 0   0   0   0   0   0   0   0   0   1243    -92 12  -18 2018-03-05 16:39:00
2282    1525345797494   4   0   0   35  338 333 664 245 244 245 0   0   0   0   0   0   0   0   0   1243    -92 12  -18 2018-03-05 16:39:00
2300    1525345797494   4   0   0   35  338 333 664 245 244 245 0   0   0   0   0   0   0   0   0   1243    -92 12  -18 2018-03-05 16:39:00
2338    1525345797494   4   0   0   35  338 333 664 245 244 245 0   0   0   0   0   0   0   0   0   1243    -92 12  -18 2018-03-05 16:39:00

预期输出

 2282   1525345797494   4   0   0   35  338 333 664 245 244 245 0   0   0   0   0   0   0   0   0   1243    -92 12  -18 2018-03-05 16:39:00

id 可以是任何东西,但不应该有任何重复的记录。

【问题讨论】:

  • 您要删除哪些列?还是您的意思是“重复行”?另外,“删除”是什么意思?从表中删除它们,或者只是在查询中排除它们?
  • 除 id 列之外的所有内容都具有相同的值。样本数据的输出是什么?
  • 对不起,我想删除重复的行。
  • 定义重复?您的示例数据中有零个重复行。

标签: sql-server


【解决方案1】:

根据 o/p,所有列都有重复值,所以您可以使用 row_number() 函数

delete t from (
     select *,
            row_number() over (partition by DataFrameId,. . . order by id) Seq 
     from OLTMS_5B0395
) t
where Seq > 1;

注意row_number() 函数中的 order by 子句,在 partition by 子句中包含重复值的列

【讨论】:

  • 并非所有列都是重复的,有 id 列不重复。
  • 我试过上面的查询,仍然有重复的行
  • 此解决方案会将具有重复 DataFrameID 的每一行视为重复,即使所有其他列都不同。
  • 请查看以下博客文章 - 这应该有助于thesqlserverdeveloper.blogspot.com/2018/03/…
猜你喜欢
  • 2023-02-06
  • 2013-08-25
  • 2019-12-04
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多