3 votes

Renvoyer uniquement le premier résultat alphabétique de SELECT

J'essaie de renvoyer uniquement le premier résultat d'une requête après qu'elle ait été triée par ordre alphabétique :

SELECT MIN(DisplayName) FROM [User] GROUP BY DisplayName

Je pensais que ce qui précède ferait l'affaire. Mais tous les résultats sont toujours classés par ordre alphabétique. Comment puis-je obtenir les résultats souhaités ?

7voto

Hart CO Points 28203

Vous n'avez pas besoin de GROUP BY :

SELECT MIN(DisplayName) 
FROM [User] 

OU :

SELECT TOP 1 DisplayName
FROM [User]
ORDER BY DisplayName

GROUP BY renverra chaque valeur distincte/combinaison de valeurs pour les champs énumérés.

1voto

dnoeth Points 42688

Seulement la première rangée ? Il suffit de supprimer le groupe par :

SELECT MIN(DisplayName) FROM [User]

1voto

Jacques Bronkhorst Points 1173

Pour retourner le premier enregistrement, vous pouvez essayer ce qui suit :

Select TOP 1 MIN(DisplayName) FROM [User] ORDER BY DisplayName

Cela permet de trier les enregistrements par ordre croissant et de sélectionner le premier enregistrement.

1voto

granadaCoder Points 6390

Voici une méthode différente si vous voulez prendre le "résultat" et le joindre à une autre table.

Use Northwind
GO

Select derived1.CustomerID, o.*  from dbo.Orders o
join
(
SELECT top 1 CustomerID FROM [Customers] customers ORder by CustomerID
) as derived1
on derived1.CustomerID = o.CustomerID

1voto

Dhaval Points 2713

Je pense que vous voulez initialiser un enregistrement par nom. Si c'est le cas, essayez ce qui suit

Voici une démo qui fonctionne SQLFiddle

SELECT Left(DisplayName , 1) , MIN(DisplayName) FROM [User] GROUP BY Left(DisplayName , 1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X