Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从当天创建的查询中删除重复记录_Mysql_Duplicates - Fatal编程技术网

Mysql 从当天创建的查询中删除重复记录

Mysql 从当天创建的查询中删除重复记录,mysql,duplicates,Mysql,Duplicates,我正在尝试创建一个SQL查询,它提取在同一天创建的所有唯一记录。例如: Table 1 Field 1 Field 2 Field 3 Bob bob@yahoo.com 2015-07-15 Rob rob@gmail.com 2015-07-16 Tiffany bob@yahoo.com 2015-07-15 结果应该是: Field 1 Field 2 Field 3 Bob

我正在尝试创建一个SQL查询,它提取在同一天创建的所有唯一记录。例如:

Table 1
Field 1     Field 2         Field 3
Bob         bob@yahoo.com   2015-07-15
Rob         rob@gmail.com   2015-07-16
Tiffany     bob@yahoo.com   2015-07-15
结果应该是:

Field 1     Field 2         Field 3
Bob         bob@yahoo.com   2015-07-15
Rob         rob@gmail.com   2015-07-16

我尝试使用select distinct,但我需要结果包含所有字段。重复数据消除应位于电子邮件地址上,它可以提取第一个条目或最后一个条目。

虽然不能保证工作正常,但以下内容可能会满足您的需要:

select t.*
from table1 t
group by field2, field3;
MySQL不保证字段来自同一行。事实上,文档很清楚,这些列来自不确定但匹配的行。实际上,这些值似乎来自同一行

如果需要更多控制,可以使用变量:

select t.*
from (select t.*,
             (@rn := if(@e = email, @rn + 1,
                        if(@e := email, 1, 1)
                       )
             ) as seqnum
      from table1 t cross join
           (select @rn := 0, @e := '') param
      order by email
     ) t
where seqnum = 1;

可能的重复不会根据OP要求的电子邮件地址字段2执行重复数据消除。当然,非常简单!谢谢,我会尝试这种方法!谢谢你的回答!对于我还没有提到的其他查询,有这样的详细程度真的很有帮助。
select *
from table1
group by Field3