gpt4 book ai didi

MYSQL 从表中删除属于特定日期的重复值

转载 作者:行者123 更新时间:2023-11-29 02:42:48 26 4
gpt4 key购买 nike

我的 mysql 表包含三个字段和附加的 id 列,它是 primary key

host              ipaddress      date
---- --------- -----
server1.abc.com 10.1.1.1 2011-10-18 22:45:16
server1 10.1.1.1 2011-12-19 21:56:46
server2 11.1.1.1 2011-12-18 21:56:46
server2.abc.com 11.1.1.1 2011-12-17 21:56:46

Here,
host --> varchar
ipaddress --> varchar
date ---> datetime

我想在表中选择 host,其中有 ip 的重复项我只想在 date like '2011-12-19%'

时检查主机的重复条目

根据上表,我的结果应该满足条件 date like '2011-12-19%'

host              ipaddress      date
---- --------- -----
server1.abc.com 10.1.1.1 2011-10-18 22:45:16
server1 10.1.1.1 2011-12-19 21:56:46

我有以下查询,它运行良好

select t1.*
from tablename t1
join (select ipaddress
from tablename
group by ipaddress
having count(*) >= 2
and count(case when CAST(date AS DATE) = '2017-12-19' then 1 end) > 0) t2
on t1.ipaddress = t2.ipaddress

现在,我需要帮助来编写查询以删除 date NOT like '2011-12-19%' 的行因此,我的表应该有一个 ipaddress 条目,其中有 date like '2011-12-19%'

host              ipaddress      date
---- --------- -----
server1 10.1.1.1 2011-12-19 21:56:46

我删除了 date -> 2011-10-18 22:45:16 的条目,这样 表中就不会出现重复的 ipaddress >date like '2011-12-19%'

最佳答案

您可以将 DELETEJOIN 一起使用:

delete t1
from mytable t1
join (select ipaddress
from mytable
group by ipaddress
having count(*) >= 2
and count(case when CAST(date AS DATE) = '2011-12-19' then 1 end) > 0) t2
on t1.ipaddress = t2.ipaddress
where CAST(date AS DATE) != '2011-12-19'

使用这个查询你可以删除记录

host              ipaddress      date
---- --------- -----
server1.abc.com 10.1.1.1 2011-10-18 22:45:16

从你的 table 上。

Demo here

关于MYSQL 从表中删除属于特定日期的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com