2009-10-21 6 views
2

Utilisation de SQL Server 2000 Developer Edition, pourquoi ce code:SQL Server 2000 "Select est cassé" avec clause TOP

résultat
select top 10 * from table 

cette erreur:

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '10'.

et ce code:

select * from master m 
left join locality l on m.localityid = l.localityid 

résultat dans cette erreur:

Server: Msg 170, Level 15, State 1, Line 2 Line 2: Incorrect syntax near 'left'.

+0

Vous recevez l'erreur de SSMS? Dans une nouvelle fenêtre ne contenant aucune autre requête? – Andomar

+0

putain, les downvotes ici sont rapides. J'ai essayé de suggérer un TOP 10 avec un ORDER BY. il a été rapidement downvoted. Je posterai juste ma réponse sur le commentaire. mettre un ORDER BY sur votre TOP 10, mettre un TOP 10 sans ORDER BY avoir un résultat indéterminé de toute façon, n'aura pas beaucoup de sens –

+0

alors .. ajouter un ORDER BY est fortement suggéré pour les opérations TOP, même si ORDERBY-less TOP cracherait des résultats. –

Répondre

2

La réponse était la compatibilité de la base de données. Il a été fixé à 60, et aurait dû être 80.

Voici un extrait de http://msdn.microsoft.com/en-us/library/bb510680.aspx

The value must be one of the following:
- 80 = SQL Server 2000
- 90 = SQL Server 2005
- 100 = SQL Server 2008

je l'ai changé à 80 et tout va bien, maintenant.

+0

intéressant. Où trouvez-vous cette information? – Raptor

+0

Je l'ai deviné et trouvé l'option dans les propriétés de la base de données dans Enterprise Manager. :) –

1

Je ne vois pas pourquoi cela se casserait, cela pourrait être dû à un problème d'installation ou de compatibilité avec l'installation. Comment utilisez-vous les requêtes? De l'Analyseur de requêtes?

En guise de suggestions rapides, essayez de mettre les 10 entre parenthèses. SÉLECTIONNEZ TOP (10) * FROM ..... Essayez aussi d'aliaser vos tables en utilisant le mot clé AS. par exemple. SELECT * FROM maître AS m ...

+0

+1 parce que vous avez mentionné la compatibilité. –

+0

TOP (10) ne devrait pas fonctionner en 2000. Les parenthèses sont une chose 2005 +. –

0

Les deux requêtes ne devraient pas poser de problème. Exécutez-vous depuis l'Analyseur de requêtes?

Je peux reproduire les erreurs si je sélectionne seulement "SELECT TOP 10" de la première requête et "SELECT * FROM MASTER M LEFT" pour la seconde. Donc, si vous n'exécutez pas à partir de l'Analyseur de requêtes, peut-être que votre chaîne de requête est altérée dans le code de votre application quelque part?

0

les requêtes n'ont aucun problème. quel analyseur de requête utilisez-vous (comme MSDE n'a pas d'interface graphique)?

Questions connexes