SELECT 没有行也没有列?
SELECT no rows and no columns?
是否可以编写 SELECT 语句,其中 returns 具有零行和零列的数据集?
我认为不可能。您将至少得到一列,但没有行。
Select null from yourTable where 1 = 2;
一个数据集总是至少有 1 列,即使它不包含任何数据。
SELECT NULL;
编辑:
正如@eggyal 所指出的,上面的语法将 return 一个空行。
他的查询 select null from dual where false;
不会 return 一行。
它通常用于从现有 Table
创建空 Table
CREATE TABLE NEW_TABLE_NAME AS
SELECT *
FROM EXISTING_TABLE_NAME
where 1=2
这适用于 postgresql:
create table test22 ();
select * from test22;
否,但可以 return 查询没有行。为了在不引用任何 table 的情况下执行此操作,您可以使用子查询:
SELECT NULL FROM (SELECT NULL) AS temp WHERE false;
此查询将有一个(空)列,但没有行。
我在不同情况下有不同的查询时使用了上面的构造,然后是循环遍历结果的代码循环,并且在某些情况下你想让它跳过循环。用上面的查询替换查询是一种 returning 空结果的方法,因此跳过没有 if
块的循环。因为查询不包含 table 名称,所以永远不需要更改代码的这方面,因此我更喜欢它而不是在现有查询中添加 WHERE false
之类的条件。
我更喜欢这个解决方案而不是引用 dual
的更简洁的解决方案,因为 PostgreSQL 不支持该构造;此解决方案适用于任何支持子查询的后端。
是否可以编写 SELECT 语句,其中 returns 具有零行和零列的数据集?
我认为不可能。您将至少得到一列,但没有行。
Select null from yourTable where 1 = 2;
一个数据集总是至少有 1 列,即使它不包含任何数据。
SELECT NULL;
编辑:
正如@eggyal 所指出的,上面的语法将 return 一个空行。
他的查询 select null from dual where false;
不会 return 一行。
它通常用于从现有 Table
创建空 TableCREATE TABLE NEW_TABLE_NAME AS
SELECT *
FROM EXISTING_TABLE_NAME
where 1=2
这适用于 postgresql:
create table test22 ();
select * from test22;
否,但可以 return 查询没有行。为了在不引用任何 table 的情况下执行此操作,您可以使用子查询:
SELECT NULL FROM (SELECT NULL) AS temp WHERE false;
此查询将有一个(空)列,但没有行。
我在不同情况下有不同的查询时使用了上面的构造,然后是循环遍历结果的代码循环,并且在某些情况下你想让它跳过循环。用上面的查询替换查询是一种 returning 空结果的方法,因此跳过没有 if
块的循环。因为查询不包含 table 名称,所以永远不需要更改代码的这方面,因此我更喜欢它而不是在现有查询中添加 WHERE false
之类的条件。
我更喜欢这个解决方案而不是引用 dual
的更简洁的解决方案,因为 PostgreSQL 不支持该构造;此解决方案适用于任何支持子查询的后端。