我想构建一个返回已在多个日期输入的条目的查询。
例如:
Name | Country | Date
Name1 | Country1 | Date1
Name2 | Country2 | Date2
Name1 | Country2 | Date3
我希望能够选择至少在两个不同日期输入的条目。在这种情况下,我的查询将只返回Name1。
SELECT DISTINCT Name FROM Table
答案 0 :(得分:3)
然后使用一个组来计算having子句中的计数。
select Name
from Table
group by Name
having count(*) > 1
如果您不想两次计算相同日期,则可以使用:
COUNT(DISTINCT Date) > 1
答案 1 :(得分:1)
在许多SQL语言中,执行此查询的最快方法是:
select t.*
from table t
where exists (select 1 from table t2 where t2.name = t.name and t2.date <> t.date);
为获得最佳效果,您需要table(name, date)
中的索引。
注意group by
方法非常合理。如果性能问题,我只是提供这个。