2010-09-15 6 views
4

je vous prie de ne me demandez pas pourquoi j'utilise SQL Server 6.5Sélectionnez TOP 1 dans SQL Server 6.5

Il n'y a pas de commande SELECT TOP dans SQL Server 6.5, et devinez quoi, je besoin :)

-je effectuer quelque chose comme

Select top 1 * from persons 
where name ='Mike' 
order by id desc 

J'ai essayé quelque chose avec SET ROWCOUNT 1, mais dans ce cas, vous ne pouvez pas utiliser par ordre.

je me retrouve avec

Select top 1 * from persons 
where id = (select max(id) from persons where name ='Mike') 

Il doit y avoir une meilleure façon!

Des suggestions?

Merci!

+1

Je ressens votre douleur, mais je pense que vous êtes bloqué avec une syntaxe étrange. – HLGEM

+2

Et ici je me plaignais juste d'être coincé dans MS SQL 2000. Devinez je vais me taire maintenant :) – LittleBobbyTables

Répondre

0

SET ROWCOUNT 1 avant votre instruction select, n'a pas testé ce que je fais (je suppose que la chance) ne pas avoir MSSQL 6.5

+0

essayé mais vous ne pouvez pas utiliser l'ordre lors de la définition de rowcount:/ – 100r

+1

Je me demande si vous pourriez faire un rowcount, et à l'intérieur avoir un choix avec votre commande – Spooks

2

Essayez de sélectionner dans une table temporaire, ordonnée par ID, puis sur SET ROWCOUNT 1 et sélectionnez * de la table temporaire. (Cela devrait fonctionner pour n'importe quel N haut avec SET ROWCOUNT N, alors que votre solution existante ne fonctionnera que pour le top 1.)

+0

Je n'ai besoin que du top 1, donc je vais bien avec. Mais qu'est-ce qui est plus cher, imbriqué select ou table temporaire? – 100r

+0

@ 100r, je pense que la réponse correcte à cela est "cela dépend". La seule façon d'être certain serait d'essayer de courir les deux et de voir comment ils se comparent. –