我有三个字段的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
我删除了qazxsw poi的条目这样,date -> 2011-10-18 22:45:16
表中不会有重复的qazxsw poi
你可以使用ipaddress
与date like '2011-12-19%'
:
DELETE
使用此查询可以删除记录
JOIN
从你的桌子。
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'