Mysql 搜索重复项,然后将值分配给另一列,根据该列在单独的列中具有最高值
我需要在我的表中查找重复项,然后检查哪一个具有最高的年龄,用其中一个最老的列更新最老的列,方法是替换为它们的名称Mysql 搜索重复项,然后将值分配给另一列,根据该列在单独的列中具有最高值,mysql,Mysql,我需要在我的表中查找重复项,然后检查哪一个具有最高的年龄,用其中一个最老的列更新最老的列,方法是替换为它们的名称 +---------+-----+--------+ | Name | Age | Oldest | +---------+-----+--------+ | John | 22 | NULL | | John | 25 | NULL | | James1 | 34 | NULL | +---------+-----+--------+ 然后,
+---------+-----+--------+
| Name | Age | Oldest |
+---------+-----+--------+
| John | 22 | NULL |
| John | 25 | NULL |
| James1 | 34 | NULL |
+---------+-----+--------+
然后,您可以使用此update语句获得您要查找的结果:
UPDATE your_table
SET oldest = name
WHERE name = 'John'
AND age IN (SELECT MAX(age) FROM your_table WHERE name = 'John'
在这种特殊情况下,您需要为使用duplicate select查询找到的每个副本手动运行update语句一次
在任何情况下,您的表都应该有一个标识列,比如id(INT)列。这两个步骤可以在存储过程中进一步开发。您的示例没有任何重复项。@穿刺者抱歉,修复了此问题。添加所需的输出also@Conor但是对于前两行,它将始终是
John
。。。还是我错了?
UPDATE your_table
SET oldest = name
WHERE name = 'John'
AND age IN (SELECT MAX(age) FROM your_table WHERE name = 'John'