У меня есть этот SQL-запрос:Как определить, завершает ли SQL-сервер результат, если используется TOP?
SELECT TOP 10 * FROM MyTable
Как сказать, если результаты были прерваны, т.е. MyTable на самом деле имеет более 10 строк?
У меня есть этот SQL-запрос:Как определить, завершает ли SQL-сервер результат, если используется TOP?
SELECT TOP 10 * FROM MyTable
Как сказать, если результаты были прерваны, т.е. MyTable на самом деле имеет более 10 строк?
Вы можете использовать COUNT
, чтобы получить общее количество строк.
SELECT COUNT(*)
FROM MyTable
Вы можете проверить, больше ли этот результат, чем 10, чтобы определить, имеет ли он более 10 строк.
Вы можете вернуть общее количество строк, используя count(*)
в качестве дополнительной колонки.
Что-то вроде этого:
select top 10 T1.*, T2.Total
from MyTable as T1
outer apply (select count(*) as Total from MyTable) as T2
Самый простой способ добавить столбец COUNT..OVER, который возвращает общее количество строк в таблице в том же запросе:
SELECT TOP 10 *, COUNT(*) OVER() As TotalRows FROM MyTable
Это общее рассчитывается после выполняются предложения FROM и WHERE, но до применяется предложение TOP.
Черт. пропущено на 2 секунды ... вверх. –
Однако, я думаю, я также хотел бы указать на то, что выбор верхних записей х без предложения по порядку является бессмысленным. –
@ ZoharPeled Согласен. – RBarryYoung
Чит:
SELECT TOP 11 * FROM MyTable
и проверить, если есть 11 строк :-) Тогда игнорировать одиннадцатую строку. Обратите внимание, что из комментария, который вы написали, возможно, вы не понимали: вы делаете этот запрос вместо запроса TOP 10
.
Если есть < = 10 rows, тогда весь набор результатов был бы возвращен TOP 10
. Если есть 11 строк, то явно TOP 10
было бы недостаточно.
p.s. Причина, по которой я заинтересован в этом, заключается в том, что, если есть больше результатов, я хочу зарегистрировать тот факт, что результирующий набор был прерван. Если я не добавлю никаких ограничений, то набор результатов может быть огромным, что означает, что SQL-сервер остановится. – Contango
Сделайте ТОП-11, и вы увидите. – jarlh
Query top 11 и используйте только 10 строк –