2011-05-05 4 views
4

J'essaie de récupérer les 10 plus grands nombres d'une table appelée le bonus.SQL Obtenez les 10 plus grands nombres

Mais je reçois ce message d'erreur:

Incorrect syntax near 'LIMIT' 

Mon code:

SELECT cust_nr, period1_bonus FROM bonus ORDER BY period1_bonus DESC LIMIT 10 
+2

Quel RDBMS utilisez-vous? –

+0

me semble bien – madmik3

+2

'LIMIT' n'est pas un mot-clé SQL compatible ANSI - il est utilisé dans MySQL, mais la plupart des autres SGBDR utilisent la syntaxe ANSI' SELECT TOP (x) ... 'à la place –

Répondre

1

Comme cette question est également marqué w/C#, je suis En supposant que vous êtes également intéressé par l'exécution de ceci dans C#. Voici l'équivalent linq-to-sql du code SQL.

public IEnumerable<Bonus> GetHighestValues() 
{ 
    var query = (from b in _context.bonus 
       take 10      
       orderby b.period1_bonus descending 
       select b); 
    return query; 
} 

Édition - Je vois que la balise C# a été retirée de la question. Pourtant, ma réponse pourrait vous aider (ou d'autres).

8

Essayez ceci:

SELECT TOP 10 cust_nr, period1_bonus FROM bonus ORDER BY period1_bonus DESC 

LIMIT <x> est une construction mySQL, pas MSSQL construction. TOP devrait travailler pour vous ici.

+0

Cela me donne la même erreur Syntaxe incorrecte près de LIMIT – dumbel

+0

La 'LIMIT ' ne fait pas partie de ma requête. –

+0

@dumbel, comment est-ce possible? Le mot LIMIT n'est même pas dans la déclaration. – Bazzz

6

Essayez SELECT TOP

SELECT TOP 10 cust_nr, period1_bonus 
FROM bonus 
ORDER BY period1_bonus DESC 
3

Vous semblez être en utilisant SQL Server.

En TSQL, la syntaxe est la suivante:

SELECT TOP 10 cust_nr, period1_bonus 
FROM bonus 
ORDER BY 
     period1_bonus DESC 
4

Je ne suis pas sûr, mais

SELECT TOP 10 cust_nr, period1_bonus FROM bonus ORDER BY period1_bonus DESC 

travailleraient?

Edit: lol, je pense que j'avais raison (voir maintenant les autres réponses tout à coup) +1 pour demander à @ Martin SGBDR :)

+0

Merci, pas les 10 plus grands nombres. mais il semble que c'est juste l'impression des 10 premiers numéros – dumbel

+0

Oui, vous trier votre résultat de la plus grande valeur au plus bas et juste retourner les dix premiers résultats. N'est-ce pas ce que vous cherchiez? –

Questions connexes