mysql - 是否存在始终返回零结果的 SQL 查询?

标签 mysql sql database postgresql

<分区>

如果有针对 MySQL/PostgreSQL/Oracle 的解决方案,我对它们都很好奇。

最佳答案

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

  • SELECT NULL LIMIT 0 (PostgreSQL 和 MySQL 语法)/SELECT TOP 0 1 (MS SQL Server 语法)
  • SELECT NULL WHERE FALSE (具有 bool 类型的 DBMS,例如 PostgreSQL)SELECT NULL WHERE 1=0 (大多数 DBMS)

对于 Oracle,这些将需要采用 SELECT NULL FROM DUAL 的形式,我相信,因为你不能拥有 SELECT没有 FROM某种条款;不确定哪些版本的 LIMIT/TOPWHERE它会接受。

一个更复杂的选择是创建一个(临时)表并且不向其中插入任何行,这可以为您提供任意数量的列,这些列将具有关联的类型,即使它们不包含任何值:

-- 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);

关于mysql - 是否存在始终返回零结果的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021915/

相关文章:

sql - 如何将 true/false/unknown 映射到 -1/0/null 而不重复?

mysql - 绑定(bind)参数以在查询中插入常量?

php - 以下代码在屏幕上显示 NAN 和 INF 值

php - 在 2 个主表之间自动创建一个 "link"表(在 Employee 和 Project 表的 Employee Project 表中)

php - 如何使用此代码获取user_id

SQL Server 服务代理

android - 如何将 Android 手机连接到本地服务器上运行的 Web 服务?

php - 输入mysql php后更新

php - 用于更新数据库中用户值的脚本不起作用 – session 问题?

php - 将 AJAX 用于包含数据库值的自动更新页面?