Подтвердить что ты не робот

SQL Server: выберите Top 0?

Мы только натолкнулись на это в старом произведении, хранящем proc (здесь происходит гораздо больше, но это находится в одной ноге его логики). Почему кто-то когда-либо выбирает верхние 0 строк из таблицы? Это какой-то хакер или трюк SQL, с которыми я не знаком?

4b9b3361

Ответ 1

Чтобы указать столбцы в UNION ALL

Обязательно прочитайте также ответ Алекс К. У него есть много причин, которые я использовал. Это был самый очевидный вариант.

Ответ 2

Его способ получить пустое множество; например, создать новую пустую таблицу с теми же столбцами, что и существующая,

SELECT TOP 0 * INTO new_table FROM old_table

Или действовать как источник имен столбцов
Или как способ возврата данных столбца, но не данных на клиентский уровень
Или как запрос для проверки возможности подключения

Это то же самое, что:

SELECT * FROM table WHERE 0=1

Ответ 3

Таким образом, у вас есть пустой набор результатов со всеми столбцами вместо результата. Если программа, использующая хранимую процедуру, ожидает определенные столбцы, она в противном случае сработает.

Ответ 4

Вы можете использовать это, чтобы захватить имена столбцов.

Ответ 5

Используйте это, чтобы создать временную таблицу, в которой может различаться сортировка вашей базы данных и TEMPDB.

SELECT TOP(0) column INTO #temp FROM [mytable]

Создает временную таблицу с той же сортировкой, что и моя таблица. Это означает, что

SELECT * FROM #temp T INNER JOIN [mytable] M ON M.column=T.column

Не сбой из-за ошибки сортировки.

Ответ 6

В основном я использовал его при создании временных таблиц из существующей таблицы БД - без каких-либо данных. Следующее более надежное, чем использование верхней части.

SELECT * FROM <table_name> LIMIT 0;