查询以查找重复条目

时间:2015-05-18 11:19:58

标签: mysql sql toad

我正在寻找一个SQL查询来给我一个表中重复条目的列表。但是,有3个不同的列需要考虑。第一个是ID,第二个是名称,第三个是日期。情况是有多个名称被分配了相同的ID,并且一天中有多个记录,这使得THOUSANDS每天都有不同的记录。

我已经对其进行了过滤,以便只显示过去7天的结果,但记录的数量仍然太多,我无法提取。我只想减少输出顺序中的行数以正确提取结果。

样品

|--id-|--name--|-------date------|
|  1  |   a    |5-9-2015, 10:00am|
|  1  |   a    |5-8-2015, 10:02am|
|  1  |   a    |5-8-2015, 11:00am|
|  1  |   b    |5-8-2015, 10:00am|
|  1  |   b    |5-8-2015, 10:02am|
|  1  |   c    |5-8-2015, 10:00am|
|  2  |   d    |5-8-2015, 10:00am|

预期产出

|--id-|--name--|
|  1  |   a    |
|  1  |   b    |
|  1  |   c    |
|  2  |   d    |

包含没有任何重复的条目是可以的。重要的是只返回一天中唯一ID名称组合的单个记录。

提前感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以将组合视为:

select distinct id, name
from sample;

如果您想要重复,请使用group byhaving

select id, name
from sample
group by id, name
having count(*) > 1;

编辑:

如果您希望按日期进行此操作,请将date(date)添加到group byselect条款中。

答案 1 :(得分:0)

要每天返回单个id-name数据,您可以使用:

select id, name
from tab
group by id, name, date(date)

答案 2 :(得分:0)

DATE()函数提取日期或日期/时间表达式的日期部分。

public class A extends Thread {

    public A(Runnable obj) {
        super(obj);
    }

    public class B implements Runnable {

        public void run() {
            System.out.println("Printing B");
        }
    }

    public void test() {
        B b = new B();
        A a = new A(b);
        a.start();
    }
}