2011-02-03 2 views
3

Comment faire get count distinct (*) dans MySQL. Par exemple, dans la table 1, j'ai 10 millions d'enregistrements, il y a des enregistrements en double dans celui-ci.nombre distinct (*)

Je veux connaître le nombre distinct (*) du tableau.

Je sais, je peux faire

select * distinct de table1 mais, je ne veux pas aller chercher 10 millions de disques, même pas envie d'insérer des enregistrements distincts dans d'autres table comme, create table table2 sélectionnez distinct * de table1

Alors, s'il vous plaît aidez-moi avec une autre option.

aide de personne d'accueil

Répondre

4

Essayez d'utiliser une sous-requête:

SELECT COUNT(*) FROM (SELECT DISTINCT * FROM table1) T1 
+0

J'ai 10 millions de disques dans le tableau, donc en utilisant la sous-requête ralentissement du résultat – Krunal

+0

@Krunal: Êtes-vous * vous * il est plus lent ?! Quelle preuve avez-vous pour cela? Avez-vous même * essayé * ça? –

+0

J'ai essayé. Il a fallu 1,30 min pour obtenir des enregistrements distincts à partir de 11256 lignes. Et j'ai 10 millions d'enregistrements dans la table. – Krunal

11
SELECT COUNT(DISTINCT field) FROM table 

ou

SELECT COUNT(*) FROM table GROUP BY field; 

(BTW - cela a été répondu à quelques reprises ailleurs sur ce site)

0

Peut-être comme:

SELECT SUM(cnt) FROM (SELECT COUNT(*) as cnt FROM tab GROUP BY some_value) 
Questions connexes