微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 是否有一个总是返回零结果的SQL查询?

如果有一个MySQL / Postgresql / Oracle特定的解决方案,我很好奇他们.

解决方法:

根据DBMS,以下一项或多项将起作用:

> SELECT NULL LIMIT 0(PostgresqlMysqL语法)/ SELECT TOP 0 1(MS sql Server语法)
> SELECT NULL WHERE FALSE(带有布尔类型的DBMS,例如Postgresql)SELECT NULL WHERE 1 = 0(大多数DBMS)

对于Oracle,我认为这些将需要采用SELECT NULL FROM DUAL形式,因为如果没有某种FROM子句,就不能使用SELECT;不确定它接受哪个版本的LIMIT / TOP和WHERE.

一个更复杂的选项是创建一个(临时)表,而不是在其中插入任何行,这可以为您提供任意数量的列,即使它们不包含任何值,也会关联类型:

-- Postgresql
CREATE TEMP TABLE dummy ( a Int, b VarChar(42) );
SELECT * FROM dummy;

-- MS sql Server
CREATE TABLE #DUMMY ( a Int, b VarChar(42) );
SELECT * FROM #DUMMY;

在Postgresql中,您甚至可以创建一个没有列的表,允许您拥有零行和零列的结果集:

CREATE TEMP TABLE empty ();
SELECT * FROM empty;

另一种可能性是,如果DBMS具有设置返回功能,则它们可能能够返回空集.例如,再次在Postgresql中,因为它是我最熟悉的,你可以给generate_series()一个无效的范围:

SELECT * FROM generate_series(0,-1);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐