2010-09-06 7 views
3

Quelle est la meilleure façon de trier les enregistrements sur Guid. Ci-dessous ne donne jamais de bons résultats.Tri sur GUID SQL Server 2008

With UIDs As (--       
      Select ID = 1, UID = NEWID() 
    Union Select ID = 2, UID = NEWID() 
    Union Select ID = 3, UID = NEWID() 
    Union Select ID = 4, UID = NEWID() 
    Union Select ID = 5, UID = NEWID() 
    Union Select ID = 6, UID = NEWID() 
    Union Select ID = 7, UID = NEWID() 
    Union Select ID = 8, UID = NEWID() 
    Union Select ID = 9, UID = NEWID() 
    Union Select ID = 10, UID = NEWID() 
    Union Select ID = 11, UID = NEWID() 
    Union Select ID = 12, UID = NEWID() 
    Union Select ID = 13, UID = NEWID() 
    Union Select ID = 14, UID = NEWID() 
    Union Select ID = 15, UID = NEWID() 
    Union Select ID = 16, UID = NEWID() 
) 
Select * From UIDs Order BY UID, ID 

Au lieu d'utiliser Guid, comment puis-je générer des entiers séquentiels dans mon select.

Merci

+1

** 1. ** Que voulez-vous dire, il ne donne pas le bon résultat. De quelle façon? ** 2. ** Que signifie la dernière ligne "Au lieu d'utiliser Guid, comment puis-je générer des entiers séquentiels dans mon select." ? –

Répondre

4

Ne pas est la meilleure réponse.

Cela explique comment SQL Server: How are GUIDs sorted by SQL Server?

Vous avez NEWSEQUENTIALID mais cela est not guaranteed pour trier comme prévu. Et pourquoi utiliser un GUID lorsque vous avez des fonctions de classement?

+0

Peut-être, mais je débogue, et en essayant de trouver une clé spécifique dans la base de données, et je veux trier mes lignes par leur ID GUID par ordre alphabétique, donc la réponse la plus mise à jour était en fait ce dont j'avais besoin :) à droite, ne l'utilisez pas en dehors d'une telle application. –

10
SELECT * 
FROM myTable 
ORDER BY CAST(myGuid AS VARCHAR(36))