【发布时间】:2021-12-21 15:50:01
【问题描述】:
我是新手,我正在尝试删除另一列中具有最高值的重复行,
This is My database and result of below query
SELECT file_id,src,dst,durations,date_time, COUNT(*), MAX(durations) as
Max_durations
FROM C2
WHERE durations in (
SELECT max(durations)
FROM C2
GROUP BY src, dst
HAVING COUNT(*) >1)
GROUP BY src,dst
HAVING COUNT(*)>1
现在我想删除重复的行,但保留具有最大持续时间或等于 Max_duration 列的行,如果具有相同的持续时间,请删除其中一个。
我该怎么做...?
| src | dst | duration | COUNT | Max_duration |
|---|---|---|---|---|
| 12014504264 | 9726341011 | 464 | 20 | 684 |
| 12014504264 | 9726645434 | 320 | 8 | 875 |
| 12014556435 | 9726876431 | 765 | 4 | 900 |
| 12014576565 | 9726347656 | 43 | 7 | 600 |
| 12014508754 | 9726344537 | 233 | 2 | 233 |
| 12014764532 | 9726877654 | 655 | 2 | 54 |
| 12014587875 | 9726645443 | 1345 | 5 | 982 |
| 12014654536 | 9726766433 | 73 | 2 | 84 |
【问题讨论】:
-
显示一些例子?请作为文本,而不是图像。 “如果有相同的持续时间”特别不清楚
-
哦,它应该是“如果有相同的持续时间删除 一个 他们”?
-
C2 有主键吗?请编辑您的问题以显示(作为文本,而不是图像)
show create table C2;和select version();的输出 -
是的,它有,10.4.21-MariaDB CREATE TABLE
C2(file_idint(11) NOT NULL AUTO_INCREMENT,srcvarchar(200) NOT NULL,dstvarchar( 200) 非空,durationsint(200) 默认空,date_time日期时间默认空,remarkvarchar(200) 默认空,status枚举('active','inactive','no_conditions') NOT NULL DEFAULT 'active',ref_noint(11) DEFAULT NULL, PRIMARY KEY (file_id) ENGINE=InnoDB AUTO_INCREMENT=1661924 DEFAULT CHARSET=utf8mb4
标签: mysql duplicates mariadb