#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, но большинство других СУБД вместо этого используют синтаксис ANSISELECT 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 # теперь удален из вопроса. Тем не менее, мой ответ может помочь вам (или другим).