我需要在我的表中查找重复项,然后检查哪个年龄最大,更新最旧的列,其中一个是最旧的,通过替换它们的名称。
+---------+-----+--------+
| Name | Age | Oldest |
+---------+-----+--------+
| John | 22 | NULL |
| John | 25 | NULL |
| James1 | 34 | NULL |
+---------+-----+--------+
我需要在我的表中查找重复项,然后检查哪个年龄最大,更新最旧的列,其中一个是最旧的,通过替换它们的名称。
+---------+-----+--------+
| 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) 列,将会很方便。这两个步骤的过程可以在存储过程中进一步发展。