首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用最小ID更新MySQL中的重复行列

使用最小ID更新MySQL中的重复行列
EN

Stack Overflow用户
提问于 2018-06-17 23:54:47
回答 1查看 207关注 0票数 1

在MySQL中有成百上千的行,其中大多数是彼此重复的。所以在这里,我想用最小的行ID来更新复制行列" update“。

代码语言:javascript
复制
+----+------+-----+--------+
| ID | Name | Age | Update |
+----+------+-----+--------+
| 1  | John | 16  | NULL   |
| 2  | John | 16  | 1      |
| 3  | John | 16  | 1      |
| 4  | John | 16  | 1      |
+----+------+-----+--------+

在上面的例子中,最小的行ID是"1“。具有相同"Name“和"Age”的重复行在"Update“列中更新为"1”。

我知道要删除重复的行,保留最小的行ID。

代码语言:javascript
复制
DELETE FROM `students` 
  WHERE ID NOT IN (
    SELECT * FROM (
      SELECT MIN(ID) FROM students 
        GROUP BY name, age
    ) 
  x);

但是现在我想要更新重复的行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 00:59:44

您可以更新所有行以包含所有重复行的最小ID,如果更新列与ID列相同,则使用第二次更新将其设置为NULL。

代码语言:javascript
复制
UPDATE Table1 AS u 
SET `Update` = (
    SELECT MIN(ID) 
    FROM (
        SELECT * FROM Table1 AS t
    ) AS l 
    GROUP BY l.Name, l.Age 
    HAVING l.Name = u.Name AND l.Age = u.Age
);
UPDATE Table1 SET `Update` = NULL WHERE `Update` = ID;

SQL Fiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50898230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档