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

MYSQL从特定日期的表中删除重复值,mysql,sql,join,group-by,inner-join,Mysql,Sql,Join,Group By,Inner Join,我的mysql表有三个字段和附加的id列,它们是主键 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

我的mysql表有三个字段和附加的
id
列,它们是
主键

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
我只想在日期如“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
从上表中,我的结果应该满足条件
日期,如“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
现在,我需要帮助编写查询以删除日期与“2011-12-19%”不同的行。 因此,我的表应该有一个
ipaddress
条目,它的
日期类似于“2011-12-19%”

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

我已经删除了
date->2011-10-18 22:45:16的条目,这样在
日期为'2011-12-19%'的表中就不会有重复的
ipaddress

您可以使用
删除
加入
:

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
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
从你的桌子上


问题,是否所有字段都存在?或者是否有其他列用作主键?有一个
id
列是主键。更新的问题以及另一个问题,示例中的
server1.abc.com 10.1.1 2011-10-18 22:45:16
如何满足
date类似于'2011-12-19%'?
它满足
date不类似于'2011-12-19%'
这里的日期实际上是
server\u createdate
我想从表中删除重复的ip条目,其中
date不类似于'2011-12-19%'
根据您的示例创建了一个示例sqlfiddle,结果如下,请检查并编辑您的代码,以反映出它的问题所在,welp,我猜您在这方面胜过了我xD