Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 搜索重复项,然后将值分配给另一列,根据该列在单独的列中具有最高值_Mysql - Fatal编程技术网

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'