在SQL中返回空表的首选方法是什么?

时间:2009-02-26 10:48:34

标签: sql

我知道我可以使用以下查询返回一个空表:

select * from tbFoo where 1=2

但该代码对我来说并不好看。

这样做有“标准”方法吗?

如果你想知道我为什么要做这么奇怪的事情,那是因为I can't name the datatables I return from a stored procedure,所以我需要空的占位符。

3 个答案:

答案 0 :(得分:25)

刚刚运行两个:

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

他们生成完全相同的执行计划。

答案 1 :(得分:1)

大多数时候,我看到1 = 0但是,这确实是你真正需要的标准方法。虽然真的很少见。

答案 2 :(得分:1)

你真正需要的是information_schema,使用它可以让你找到一个表的定义。

您没有提到您正在使用的数据库,因此这里有一个关于information_schema Support in 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'