2016-04-13 62 views
1

Yinelenen tablodaki tüm satırların toplam sayısını elde etmeye çalışıyorum. her satır bir kopya içeriyor ve saatler toplam miktarını sayıyor,Yinelenen toplam satır sayısı

SELECT count(`id_lead`) 
FROM `lead_history` 
GROUP BY `id_lead` 
HAVING count(*) > 1 

sorun bu satırların toplam sayısını sayma olmamasıdır: Burada

Şu anda kullanıyorum sorgu bunu iade ediyorum.

Bu yüzden şu anda, gibi dönen: çoğaltmaları 4 sıra olmadığından bu sonuçların göz önüne alındığında

2 
4 
6 
2 

, aslında benim sorgu 4 dönmek istiyorum. Her satırın kopyalarının miktarı benim için önemli değil.

Bu sorguyu alt sorgular kullanmadan nasıl yazarım?

+0

ya 'GRUP BY' veya' DISTINCT' sen dostum yardımcı olabilir – Avidos

cevap

0

Oracle veya SQL Server gibi bir şey kullanıyorsanız, analitik işlevlerden yararlanabilirsiniz. Ama MySQL'in bunlara sahip değil, bu yüzden bir alt sorgu kullanarak cevabınızı almanın en iyi yolu olabilir.

Alt sorgunun ilişkilendirilmediğini unutmayın, bu nedenle sorgu iyileştiricisi, bu çalıştırmayı makul ölçüde verimli bir şekilde yapabilmelidir.

0

sadece türetilmiş tabloda sorgu koymak Neredeyse geldin Bu

SELECT count(*) 
FROM `lead_history` 
GROUP BY `id_lead` 
HAVING count(*) > 1 
0

deneyin. Hiçbir ek in veya join gerekli:

select count(*) from (
    select `id_lead` 
    from `lead_history` 
    group by `id_lead` 
    having count(*) > 1 
) t 
0

deneyin ve bundan sayımı seçmek bu yolu

SELECT COUNT(*) 
FROM `lead_history` as b 
join (SELECT `id_lead` FROM `lead_history` GROUP BY `id_lead` HAVING COUNT(*) > 1) a on b.id_lead=a.id_lead 
İlgili konular