Ответ 1
Чтобы указать столбцы в UNION ALL
Обязательно прочитайте также ответ Алекс К. У него есть много причин, которые я использовал. Это был самый очевидный вариант.
Мы только натолкнулись на это в старом произведении, хранящем proc (здесь происходит гораздо больше, но это находится в одной ноге его логики). Почему кто-то когда-либо выбирает верхние 0 строк из таблицы? Это какой-то хакер или трюк SQL, с которыми я не знаком?
Чтобы указать столбцы в UNION ALL
Обязательно прочитайте также ответ Алекс К. У него есть много причин, которые я использовал. Это был самый очевидный вариант.
Его способ получить пустое множество; например, создать новую пустую таблицу с теми же столбцами, что и существующая,
SELECT TOP 0 * INTO new_table FROM old_table
Или действовать как источник имен столбцов
Или как способ возврата данных столбца, но не данных на клиентский уровень
Или как запрос для проверки возможности подключения
Это то же самое, что:
SELECT * FROM table WHERE 0=1
Таким образом, у вас есть пустой набор результатов со всеми столбцами вместо результата. Если программа, использующая хранимую процедуру, ожидает определенные столбцы, она в противном случае сработает.
Вы можете использовать это, чтобы захватить имена столбцов.
Используйте это, чтобы создать временную таблицу, в которой может различаться сортировка вашей базы данных и TEMPDB.
SELECT TOP(0) column INTO #temp FROM [mytable]
Создает временную таблицу с той же сортировкой, что и моя таблица. Это означает, что
SELECT * FROM #temp T INNER JOIN [mytable] M ON M.column=T.column
Не сбой из-за ошибки сортировки.
В основном я использовал его при создании временных таблиц из существующей таблицы БД - без каких-либо данных. Следующее более надежное, чем использование верхней части.
SELECT * FROM <table_name> LIMIT 0;