Какой предпочтительный способ вернуть пустую таблицу в SQL?

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

select * from tbFoo where 1=2

но этот код мне не нравится.

Есть ли «стандартный» способ сделать это?

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

Ответов (3)

Решение

Просто запустив оба:

SELECT TOP 0 * FROM Table
and
SELECT * FROM Table WHERE 1=0

Они производят точно такой же план выполнения.

В большинстве случаев я вижу 1 = 0, но да, это в значительной степени стандартный подход, когда вам действительно нужно. Хотя на самом деле приходиться редко.

Что вам действительно нужно, так это то information_schema, что его использование позволит вам узнать определение таблицы.

Вы не указываете, какую базу данных вы используете, поэтому вот ссылка о information_schemaподдержке в MySQL, PostgreSQL (и MSSQL, Oracle и т. Д.)

Пример с сайта;

SELECT table_name, column_name, is_nullable, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'employees'

В вашем случае все, что вам нужно, это имена столбцов;

SELECT column_name 
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'employees'