Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Php MySQL列出特定字段上的所有重复项,并且仅当另一个字段日期之间的日期_Php_Mysql - Fatal编程技术网

Php MySQL列出特定字段上的所有重复项,并且仅当另一个字段日期之间的日期

Php MySQL列出特定字段上的所有重复项,并且仅当另一个字段日期之间的日期,php,mysql,Php,Mysql,我在MySQL mytable中有一个表,如下所示: id car_num date ----- -------- ----------- 00001 BBB 2015-09-28 00002 BBB 2015-10-04 00003 DDD 2015-10-04 00004 BBB 2015-10-04 00005 AAA 2015-

我在MySQL mytable中有一个表,如下所示:

    id    car_num      date  
    -----  --------   -----------
    00001    BBB      2015-09-28
    00002    BBB      2015-10-04
    00003    DDD      2015-10-04
    00004    BBB      2015-10-04
    00005    AAA      2015-10-05
    00006    GGG      2015-10-05
    00007    GGG      2015-10-05
    00009    EEE      2015-10-06
    00010    AAA      2015-10-06
    00011    HHH      2015-10-10
    00012    FFF      2015-10-11
    00013    FFF      2015-10-11
    00014    CCC      2015-10-13
以下是我的查询,用于显示所有重复字段car_num:

    SELECT  a.*
    FROM    mytable a
        INNER JOIN
        (
         SELECT  car_num
         FROM    mytable
         GROUP   BY car_num
         HAVING  COUNT(car_num) >= 2
        ) b ON a.car_num = b.car_num
    ORDER BY car_num ASC
结果是:

     id    car_num      date  
    -----  --------   -----------
    00005    AAA      2015-10-05
    00010    AAA      2015-10-06
    00001    BBB      2015-09-28
    00002    BBB      2015-10-04
    00004    BBB      2015-10-04
    00012    FFF      2015-10-11
    00013    FFF      2015-10-11
    00006    GGG      2015-10-05
    00007    GGG      2015-10-05
现在,我只想在每两个重复项的日期字段之间的间隔小于或等于1天时显示重复项,并且我想按日期描述对它们进行排序

我所期望的是:

     id    car_num      date  
    -----  --------   -----------
    00012    FFF      2015-10-11
    00013    FFF      2015-10-11
    00010    AAA      2015-10-06
    00005    AAA      2015-10-05
    00006    GGG      2015-10-05
    00007    GGG      2015-10-05
    00002    BBB      2015-10-04
    00004    BBB      2015-10-04

可以直接使用MySQL查询DATEDIFF吗?感谢您的帮助

您可以这样做:

select t.*
from mytable t
where exists (select 1
              from mytable t2
              where t.car_num = t2.car_num and 
                    t.id <> t2.id and
                    abs(datediff(t2.date, t.date)) <= 1
             );

您的描述和示例结果不一致。很抱歉,复制/粘贴错误:MySQL query Edited您的预期结果在重复之间有0或1天的间隔。这仍然与你的解释相矛盾。我只需要当一天小于或等于一天时,解释编辑。。。对不起我的英语我是frenchThanks,如果WHERE子句仅仅是t.car_num=t2.car_num,那么它似乎有效,但是现在我想比较更复杂的标准,比如upperreplaceCar_num,,,,,-,不是直接在car_num上。我尝试使用reduce_num.car_num=reduce_num2.car_num的函数传递param,但查询进入无限循环。有什么想法吗?@patrak1。你应该问另一个问题。你的问题对于所使用的匹配标准非常清楚。