当前位置: 首页 > 面试题库 >

根据一列值删除重复的行

劳灵均
2023-03-14
问题内容

我有下表,现在我需要删除具有重复的“ refID”但至少有一行与该引用对应的行,即我需要删除第4行和第5行。请对此提供帮助

+----+-------+--------+--+
| ID | refID |  data  |  |
+----+-------+--------+--+
|  1 |  1023 | aaaaaa |  |
|  2 |  1024 | bbbbbb |  |
|  3 |  1025 | cccccc |  |
|  4 |  1023 | ffffff |  |
|  5 |  1023 | gggggg |  |
|  6 |  1022 | rrrrrr |  |
+----+-------+--------+--+

问题答案:

这类似于Gordon Linoff的查询,但没有子查询:

DELETE t1 FROM table t1
  JOIN table t2
  ON t2.refID = t1.refID
  AND t2.ID < t1.ID

这将使用内部联接仅删除其中另一行具有相同的refID但具有较低ID的行。

避免子查询的好处是能够利用索引进行搜索。该查询在refID + ID上使用多列索引时应表现良好。



 类似资料:
  • 问题内容: 我有一个带有Year列的表,并且此列不应有重复的值。因此,我最终得到一张仅具有2007年记录的表格。 那么,如何删除具有重复年份值的行呢? 谢谢 问题答案: 我认为您可以尝试使用IGNORE添加唯一索引: MySQL应该以类似以下内容的方式进行响应: 当然,您可以将其留给MySQL来决定删除哪些行。 编辑: 这适用于任意多的列: 查看有关CREATE INDEX的MySQL文档。一个常

  • 问题内容: 我有这张桌子,我想用SELECT来排除标记的行。一般规则是: 如果有两行或更多行,控件名与品牌名与组类型列相等 然后保留组名不是“ Keine Zuordnung”的行。 请给我一点帮助吗?谢谢! 问题答案: 这是一种方法: 它使用窗口函数来获取计数,然后使用a进行逻辑计算。

  • 问题内容: 有没有一种方法可以根据行中包含的值删除行?例如,我有一个表,其中的值在包含URL值的一列中,例如, /uk/quitclock/om2.asp /uk/quitclock/om666.wav 在这里,我需要删除后缀为WAV,GIF或JPEG的行。我怎么做?如果不可能,那么excel中是否有任何公式可以帮助我做到这一点? 问题答案: 在数据库上尝试

  • 问题内容: 如何构造一个mySQL查询以基于最大值删除行。 我试过了 但是有错误? 问题答案: 采用: 请注意,如果存在重复,则将删除 所有 具有该值的行。 关于1093错误的愚蠢之处在于,您可以通过在自引用之间放置一个子查询来解决它: 说明 MySQL仅在使用&语句时检查是否存在正在更新的同一表的一级子查询。这就是为什么将其放在第二级(或更深层)的子查询替代项中的原因。但这只是检查子查询- JO

  • 我有两张桌子——桌子1和桌子2。 它们有相同的列——Col1、Col2、Col3、Col4(整数)。 我将Table_2行插入Table_1。 表_1和表_2有一些基于Col1和Col2的重复值。我需要保留表_2的值,并删除表_1的重复值。 例如: 我尝试了以下方法-

  • 问题内容: 我有以下DataFrame: 我需要删除等于的行0。最有效的方法是什么? 问题答案: 如果我正确理解的话,它应该很简单: