如何select一个空的结果集?

我正在MySQL中使用一个存储过程,并带有一个CASE语句。

在CASE的ELSE子句中(相当于默认值:)我想select并返回一个空的结果集,这样就避免了因为不处理ELSE情况而抛出一个SQL错误,而是返回一个空的结果集,就好像一个普通的查询将不会返回任何行。

到目前为止,我已经设法使用这样的东西:
Select NULL From users Where False

但是我必须命名一个现有的表,比如这个例子中的“用户”。 它的工作原理,但我宁愿更优雅的方式,如果最终使用的表名称被重命名或删除不会中断。

我试过Select NULL Where False但它不起作用。

使用Select NULL不会返回一个空的集合,而是一行具有名为NULL并具有NULL值的列。

MySQL中有一个名为“dual”的虚拟表,您应该可以使用它。

 select 1 from dual where false 

这将永远给你一个空的结果。

这应该适用于任何数据库,在Postgres和Netezza上testing:

 SELECT NULL LIMIT 0; 

怎么样

  SELECT * FROM (SELECT 1) AS TBL WHERE 2=3 

在myphp中检查,它也适用于sqlite,可能在任何其他数据库引擎。

T-SQL(MSSQL):

 SELECT Top 0 1; 

这可能适用于所有数据库。

 SELECT * FROM (SELECT NULL AS col0) AS inner0 WHERE col0 IS NOT NULL; 
 SELECT TOP 0 * FROM [dbo].[TableName] 

这是恒定扫描运算符的合理方法。

这个怎么样?

 SELECT 'MyName' AS EmptyColumn FROM dual WHERE 'Me' = 'Funny' 

在PostgreSQL中一个简单的

 SELECT; 

作品。 你甚至不会得到任何标记为“未知”的列。
但是请注意,它仍然表示检索到1行。

 SELECT * FROM (SELECT NULL) WHERE 0