搜索重复项,然后根据另一列中具有最高值的列将值分配给另一列

  • 本文关键字:一列 最高值 分配 搜索 然后 mysql
  • 更新时间 :
  • 英文 :


我需要在我的表中查找重复项,然后检查哪个具有最高的年龄,通过替换为它们的名称来更新其中一个最旧的列。

+---------+-----+--------+
|  Name   | Age | Oldest |
+---------+-----+--------+
| John    | 22  | NULL   |
| John    | 25  | NULL   |
| James1  | 34  | NULL   |
+---------+-----+--------+
You will find your duplicates with this select statement
SELECT name FROM your_table
GROUP BY name
Having COUNT(name) > 1
result "John"
This will result in a list (of one in this case) of duplicate names. 

然后,您可以使用此更新语句来获取所需的结果:

UPDATE your_table
SET oldest = name
WHERE name = 'John'
AND age IN (SELECT MAX(age) FROM your_table WHERE name = 'John'

在这种特殊情况下,您需要手动执行该过程,为使用重复选择查询找到的每个重复项运行一次更新语句。

在任何情况下,您的表都有一个标识列(例如 id (INT(列(会很方便。这两个步骤过程可以在存储过程中进一步开发。

最新更新