Je suis toujours surpris pourquoi la requête aussi simple ne fonctionne pas: où comme p> et p> SELECT DISTINCT * FROM dbo.t_test
4 Réponses :
Cela ne fonctionne pas car vous n'êtes autorisé à spécifier qu'une seule expression dans Si vous regardez soigneusement, vous pouvez voir que la grammaire autorisée ne fait pas t em> Inclure L'alternative est la suivante: p> compter (distincte ...) code> selon le documentation : Nombre (distinct *) code>. p>
comme un exemple simple, disons que vous avez deux colonnes, A et B.
A B 1 100 2 100 3 100
Merci Joe! J'ai mis à jour la question concernant votre explication.
En plus de ce que les autres ont dit: p>
Une chose à prendre conscience est que faire un Ceci est parce que distinct * em> inclut la colonne PK et à chaque rangée est distincte de toutes les autres rangées. p>
et comme chaque table non triviale doit avoir une clé primaire (il n'y a que très fort> à quelques exceptions près à cette règle) compter (distinct *) code> (s'il était autorisé) sur une table présentée une clé primaire serait identique à un compte SELECT ( *) code>. p>
comptage (distinct *) code> peut être "remplacé" avec compte (*) code> de toute façon. P>
La vérité de la matière est que SQL (serveur) ou toute autre implémentation SQL est Il y a des raisons de limiter la syntaxe SQL à certains éléments, à partir de la couche d'analyse à une optimisation de la requête à la prévisibilité des résultats à un bon sens commun. P>
La fonction d'agrégat de comptage est normalement implémentée comme un agrégat en continu avec une porte pour un seul élément, que ce soit Lorsque vous demandez marque a La bonne variante . P> * code> (nombre d'enregistrements, utilisez simplement un jeton statique) ou colname Code> (incrément de jeton uniquement lorsqu'il n'est pas null) ou Colname distinct code> (un hachage / godet avec une touche unique). P>
compter (distinct *) code> ou pour cette affaire, comptage (distinct A, B, C) code> - Oui, il peut sûrement être fait pour vous Si certains RDBMS s'adressent à la mettre en œuvre un jour; Mais c'est (1) peu de temps suffisamment (2) ajoute que le travail à l'analyseur (3) ajoute de la complexité à la mise en œuvre du compte. P>