SQL получает 10 самых больших чисел

#sql #sql-server #tsql

#sql #sql-сервер #tsql

Вопрос:

Я пытаюсь повторно получить 10 самых больших чисел из таблицы под названием bonus.

Но я получаю это сообщение об ошибке:

 Incorrect syntax near 'LIMIT'
  

Мой код:

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

Комментарии:

1. LIMIT не является ключевым словом SQL, совместимым с ANSI — оно используется в MySQL, но большинство других СУБД вместо этого используют синтаксис ANSI SELECT TOP (x) ...

2. @marc_s: «большинство» — это SQL Server и Sybase ? TOP не ANSI слишком: ANSI есть FETCH FIRST n ROWS ONLY , который поддерживается только DB2 и PostgreSQL .

Ответ №1:

Попробуйте это вместо:

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

LIMIT <x> это конструкция MySQL, а не конструкция MSSQL. TOP здесь должно сработать для вас.

Комментарии:

1. LIMIT <x> Не является частью моего запроса.

2. @dumbel, как это возможно? Ограничение на количество слов даже не указано в инструкции.

3. Исправил это, теперь просто перенес ограничение и заработал. Спасибо всем за ваше время и помощь.

Ответ №2:

Попробуйте ВЫБРАТЬ TOP

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

Ответ №3:

Я не уверен, но будет

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

работает?

Редактировать: лол, я думаю, что был прав (теперь внезапно вижу другие ответы) 1 @ Martin за запрос rdbms 🙂

Комментарии:

1. Спасибо, не 10 самых больших чисел. но, похоже, он просто печатает первые 10 чисел

2. Да, вы сортируете свой результат от самого большого значения до самого низкого и просто возвращаете первые десять результатов. Разве это не то, что вы искали?

Ответ №4:

Вы, кажется, используете SQL Server .

В TSQL синтаксис такой:

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

Ответ №5:

Поскольку этот вопрос также помечен как w / c #, я предполагаю, что вы также заинтересованы в выполнении этого на c #. Вот эквивалент кода SQL в linq-to-sql.

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

Редактировать — Я вижу, что тег c # теперь удален из вопроса. Тем не менее, мой ответ может помочь вам (или другим).