如何选择空结果集?

Pet*_*uza 47 mysql sql null stored-procedures resultset

我在MySQL中使用了一个存储过程,带有CASE语句.

在CASE的ELSE子句中(相当于默认值:)我想选择并返回一个空结果集,从而避免因不处理ELSE情况而抛出SQL错误,而是返回一个空结果集,就好像一个常规查询一样本来没有返回任何行.

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

但是我必须命名一个现有的表,比如本例中的"users".它可以工作,但我更喜欢一种更优雅的方式,如果最终重命名或删除所使用的表名,它不会中断.

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

使用Select NULL不返回空集,但是一行具有名为NULL且具有NULL值的列.

Bjö*_*örn 41

在MySQL中有一个名为'dual'的虚拟表,您应该可以使用它.

select
    1
from
    dual
where
    false
Run Code Online (Sandbox Code Playgroud)

这总是会给你一个空的结果.


Ale*_*leh 19

这应该适用于在Postgres和Netezza上测试的大多数数据库:

SELECT NULL LIMIT 0;
Run Code Online (Sandbox Code Playgroud)

  • 我最喜欢这个解决方案.也适用于MySQL(v5.5). (4认同)

小智 9

T-SQL(MSSQL):

SELECT Top 0 1;
Run Code Online (Sandbox Code Playgroud)


Mak*_*see 7

怎么样

 SELECT * FROM (SELECT 1) AS TBL WHERE 2=3
Run Code Online (Sandbox Code Playgroud)

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