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

问题描述 投票:2回答:1

我有三个字段的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

mysql sql join group-by inner-join
1个回答
1
投票

你可以使用ipaddressdate 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'

© www.soinside.com 2019 - 2024. All rights reserved.