postgresql Postgres空SELECT子句“影响行”

x33g5p2x  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(156)

我偶然发现了Postgres的行为,我不明白。我输入这个简单的查询。请注意,SELECT子句中没有表达式:

SELECT FROM (VALUES (1), (2), (3)) AS data(value);

服务器回复

Query executed OK, 3 rows affected.

根据SELECT语句的文档,空子句似乎完全有效,但我不明白 * 受影响的行 * 在这种情况下是什么意思。EXPLAIN给了我简单的“值扫描”查询计划。当我将SELECT更改为SELECT *时,查询按预期工作并返回三行表。
SELECT <nothing> FROM ...是什么意思Postgres版本是9.5。

0x6upsns

0x6upsns1#

PostgreSQL允许空的SELECT列表(SQL标准不允许)。
“3 rows affected”一定是您的客户端在收到包含三行的结果集时所说的话。结果集 * 确实 * 包含三行,即使它们不包含列。也许您的客户端显示结果集时将其视为空,但实际上并非如此。

相关问题