Мы только натолкнулись на это в старом произведении, хранящем proc (здесь происходит гораздо больше, но это находится в одной ноге его логики). Почему кто-то когда-либо выбирает верхние 0 строк из таблицы? Это какой-то хакер или трюк SQL, с которыми я не знаком?
SQL Server: выберите Top 0?
Ответ 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;