这是一张桌子
id date name 1 180101 josh 2 180101 peter 3 180101 julia 4 180102 robert 5 180103 patrick 6 180104 josh 7 180104 adam
我需要得到与'josh'有相同日子的所有名字。如何在不将整张桌子拼凑在一起的情况下实现它。我需要保持高效(这不是我真正的表,我只是简化了我的问题,我有成千上万的记录,99%的行有不同的日期,所以按日期分组的行是很少见的)。
基本上我想要的是:如果'josh'是目标,我需要得到'josh,peter,julia,adam'(实际上前10个不同的名字与josh共享同一个日期)。
SELECT COUNT(date) as datecount, GROUP_CONCAT(DISTINCT name) as names, FROM table GROUP BY date HAVING datecount>1 // && name IN ('josh') would work nice for me, but im getting error because 'name' is not in GROUPED BY LIMIT 10
任何的想法 ?正如我所提到的,它需要很快,并且大多数行都有唯一的日期
在date
上加入表格:
select distinct t1.name
from tbl t1
join tbl t2 using (date)
where t2.name = 'josh'
为获得最佳性能,您可以获得(name)
和(date, name)
的索引。