我需要在我的表中查找重复项,然后检查哪个具有最高的年龄,通过替换为它们的名称来更新其中一个最旧的列。
+---------+-----+--------+
| 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(列(会很方便。这两个步骤过程可以在存储过程中进一步开发。