4

是否可以编写一个 SELECT 语句,它返回零行和零列的数据集?

4

5 回答 5

4

一个数据集总是至少有 1 列,即使它不包含数据。

SELECT NULL;

编辑:

正如@eggyal 所指出的,上述语法将返回一个空行。

他的查询select null from dual where false;不会返回一行。

于 2016-07-26T10:02:57.687 回答
1

这适用于 postgresql:


create table test22 ();
select * from test22;

于 2020-10-01T19:09:30.177 回答
1

在我看来不可能。您将获得至少一列,但没有行。

Select null from yourTable where 1 = 2;
于 2016-07-26T09:56:52.460 回答
0

它通常用于从现有表创建空表

CREATE TABLE NEW_TABLE_NAME AS
  SELECT * 
  FROM EXISTING_TABLE_NAME
  where 1=2
于 2016-07-26T11:29:50.870 回答
0

否,但可以返回没有行的查询。为了在不引用任何表的情况下执行此操作,您可以使用子查询:

SELECT NULL FROM (SELECT NULL) AS temp WHERE false;

此查询将有一个(空)列,但没有行。

当在不同情况下存在不同的查询时,我使用了上述构造,然后是循环遍历结果的代码循环,并且在某些情况下您希望使其跳过循环。用上面的查询替换查询是一种返回空结果并因此跳过没有if块的循环的方法。因为查询不包含表名,所以代码的这方面永远不需要更改,因此我更喜欢WHERE false在现有查询中添加条件。

我更喜欢这个解决方案而不是更简洁的引用dual,因为 PostgreSQL 不支持这种结构。此解决方案适用于任何支持子查询的后端。

于 2021-07-02T15:26:41.367 回答