Raison pour ORDRE PAR les éléments doivent apparaître dans la liste de sélection si SELECT DISTINCT est spécifié

Je sais que la requête ci-dessous les causes de l'erreur - COMMANDE PAR éléments doivent apparaître dans la liste de sélection si SELECT DISTINCT est spécifié.

SELECT DISTINCT city
FROM HR.Employees
WHERE country = N'USA' AND region = N'WA'
ORDER BY birthdate;

Quelle est la raison ? Ce qui se passe réellement ? Si je n'utilise pas DISTINCTS ou simplement d'ajouter la date de naissance de SÉLECTIONNER ou de la COMMANDE PAR la ville, il me donne une partie de la sortie, mais pas une erreur. Est-ce parce que SELECT DISTINCT city donne seulement un jeu de résultats avec les villes et rien d'autre ?

ÉDITION -(je pense que cela peut être une réponse à ma question)

SELECT city
FROM HR.Employees
WHERE country = N'USA' AND region = N'WA'

Examiner la requête ci-dessus. Pas sûr, mais je pense que c'est la façon dont il fonctionne, en coulisse, SQL Server a probablement un jeu de résultats avec toutes les colonnes, mais nous ne sommes que le montre la colonne ville que j'appellerai le "jeu affiché" . Ainsi, la commande par ville ou n'importe quelle autre colonne est valide.

Ce qui se passe dans les résultats lorsque nous utilisons SELECT DISTINCT ville à la place ? SQL server n'a pas uniquement les lignes avec les villes DISTINCTES dans son ensemble de résultats. Il a l'ensemble du jeu de résultats, comme celui généré par une requête SELECT*. Mais, il ne montre que des lignes distinctes fondées sur la ville. Peut maintenant ce jeu affiché être triées en fonction de la date de naissance ? No.

Dans une ville avec de nombreux employés, c'est à dire beaucoup de dates de naissance, SQL server ne peut pas dire qui date de naissance doit être utilisé pour la commande de l'affichage de l'ensemble. C'est pourquoi il affiche un message d'erreur.

J'ai vu Joel Coehoorn réponse, mais je ne suis pas sûr si c'est la meilleure façon de penser à elle - stackoverflow.com/questions/265628/...
Il peut y avoir plusieurs employés dans une ville, ainsi que la date de naissance doit-il utiliser lors de la commande de la ville?
Je suis d'accord. Mon seul doute est si DISTINCT génère un ensemble de résultats qui n'a de lignes avec les villes distinctes. Je pense que c'est l'erreur dans ma façon de penser. Alors, j'ai fait un edit à ma question. Veuillez voir et me dire si cela a du sens.

OriginalL'auteur Steam | 2013-09-03