当前位置: 首页 > 知识库问答 >
问题:

删除列值的重复条件

欧阳杰
2023-03-14

我有两张桌子——桌子1和桌子2。

它们有相同的列——Col1、Col2、Col3、Col4(整数)。

Col4 value for all Table_1 rows is 1.
Col4 value for all Table_2 rows is 2.

我将Table_2行插入Table_1。

表_1和表_2有一些基于Col1和Col2的重复值。我需要保留表_2的值,并删除表_1的重复值。

例如:

   Col1,Col2,Col3,Col4
1) a   ,b   ,c   ,1      (From Table_1)
2) a   ,b   ,d   ,2      (From Table_2)

我尝试了以下方法-

ALTER TABLE_1 ADD UNIQUE(Col1,Col2)

它删除了表_2的值,而不是表_1的值。

我该如何解决这个问题?


共有2个答案

徐麒
2023-03-14

另一种选择。在col1和col2上创建唯一键,并使用替换为语法。

REPLACE INTO Table_1 (col1, col2, col3, col4)
SELECT col1, col2, col3, col4 FROM Table_2

如果存在重复记录,它将删除表_1中的记录,并插入表_2中的记录。如果记录不存在,只需插入即可。

孔礼骞
2023-03-14

在col1、col2上放置一个唯一的键,并在重复键上使用在插入时更新col3=VALUES(col3)、col4=VALUES(col4)

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

  • 我有一个数据框,有两列ID和Salary 在此数据帧中,某些ID被复制,在这种情况下,ID=2。我想为每个重复的ID保留最高的薪水。

  • 对于包含10列的数据框,如何删除索引2以上的列。数据框如下所示: 任务是删除列3-列10

  • 问题内容: 我想从下表中删除多个重复的键: 希望它像 我正在使用mysql。这是可能的吗?我不能使用 查询来进行唯一的输入,因为我希望将这些重复的输入输入到表中。 问题答案: 一种方法是使用将表联接到子查询上。子查询得到最低为每。当记录在子查询上不匹配时,仅表示它没有匹配的记录并且可以安全地删除。 SQLFiddle演示 但是,如果的记录可以具有不同的名称,则您需要在子句中包括它们,否则将仅保留最

  • 问题内容: 我必须向现有表添加唯一约束。很好,除了表已经有数百万行,而且许多行违反了我需要添加的唯一约束。 删除有问题的行的最快方法是什么?我有一条SQL语句,该语句查找重复项并将其删除,但要花很长时间才能运行。有没有其他方法可以解决此问题?也许备份表,然后在添加约束后还原表? 问题答案: 其中一些方法似乎有些复杂,我通常这样做是: 给定table table,要在()上对其进行唯一化,使行保持为

  • 问题内容: 我需要执行分组依据,但只能在满足条件的行上执行,否则返回不满足条件的所有行。例如,在下表中,我只希望对“活动”字段中具有“ 1”的行进行分组,并返回所有没有的行。 表格(ID,标签,有效): 将返回: 问题答案: 这是我能想到的最简单的方法。这是group by中的一个案例。如果满足条件,则按标签分组,否则按主键分组。 如果要按活动分组并标记: 编辑:我误解了您要分组的字段。现在已更正