Использовать переменную с TOP в инструкции select в SQL Server, не делая ее динамичной

declare @top  int
set @top = 5
select top @top * from tablename

Возможно ли это?

Или любая идея для такой логики (я не хочу использовать динамический запрос)?

+162
18 дек. '09 в 10:35
источник поделиться
3 ответа

Да, в SQL Server 2005 можно использовать переменную в предложении top.

select top (@top) * from tablename
+278
18 дек. '09 в 10:38
источник

SQL Server 2005 фактически позволяет нам параметризовать предложение TOP, используя переменную, выражение или оператор. Таким образом, вы можете делать такие вещи, как:

SELECT TOP (@foo) a FROM table ORDER BY a 

SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a 

SELECT TOP (@foo + 5 * 4 / 2) a FROM table ORDER BY a 

Источник

+38
18 дек. '09 в 10:38
источник
другие ответы

Связанные вопросы


Похожие вопросы

В 2005 году и позже вы можете сделать это, так как в этом потоке есть несколько ответов.

Чем менее известно, что вы можете достичь этого также в 2k, используя SET ROWCOUNT.

  -- Works in all versions
  SELECT TOP 10

  -- Does not work on 2000
  SELECT TOP (10)
  SELECT TOP (@rows)

  -- Works in both 2ooo and 2oo5
  SET ROWCOUNT @max

  SELECT * 
  FROM ...

  SET ROWCOUNT 0

Обратите внимание, что если вы забыли SET ROWCOUNT 0 в конце, предел сохранится.. и вам будет очень сложно найти ошибки: -)

+24
18 дек. '09 в 10:56
источник

Посмотрите другие вопросы по меткам или Задайте вопрос