如何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