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

MySql:根据列重复值删除表行?

华煜祺
2023-03-14
问题内容

我有一个带有Year列的表,并且此列不应有重复的值。因此,我最终得到一张仅具有2007年记录的表格。

那么,如何删除具有重复年份值的行呢?

谢谢


问题答案:

我认为您可以尝试使用IGNORE添加唯一索引:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);

MySQL应该以类似以下内容的方式进行响应:

Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0

当然,您可以将其留给MySQL来决定删除哪些行。

编辑:

这适用于任意多的列:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);

查看有关CREATE INDEX的MySQL文档。一个常见的陷阱(至少我曾经碰到过一次)会忘记那NULL = NULL不是真的(而是NULL),因此在两列的UNIQUE索引中允许使用{42,NULL}和{42,NULL}。



 类似资料:
  • 问题内容: 我有下表,现在我需要删除具有重复的“ refID”但至少有一行与该引用对应的行,即我需要删除第4行和第5行。请对此提供帮助 问题答案: 这类似于Gordon Linoff的查询,但没有子查询: 这将使用内部联接仅删除其中另一行具有相同的refID但具有较低ID的行。 避免子查询的好处是能够利用索引进行搜索。该查询在refID + ID上使用多列索引时应表现良好。

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

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

  • 本文向大家介绍Mysql删除重复的数据 Mysql数据去重复,包括了Mysql删除重复的数据 Mysql数据去重复的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库中查询重复数据 select * from employee group by emp_name having count (*)>1; Mysql  查询可以删除的重复数据 select t1.* from employee

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

  • 问题内容: 我有三个表,每个表都有一个外键。当执行联接时,我得到重复的列。 给定 我的查询语句: 我的目标是从联接中获得所有列的一行,而没有重复的列。那么我应该使用什么SQL语句语法? 问题答案: 默认情况下,如果使用MySQL,MySQL将返回所有表的所有列。您将需要在查询中显式输入列名称,以所需的方式检索它们。使用查询,如下所示: