You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中用player.*获取元组形式的查询结果?

问题原因与解决方法

为什么两种写法结果不同?

  • 第一种写法(player.id, player.firstname, player.lastname)是显式构造行元组:SQL里用括号把多个字段括起来时,会生成一个复合类型的单列,所有字段值会被打包成元组形式返回,所以结果集只有player这一列。
  • 第二种写法(player.*)里的括号是冗余的:SQL解析器会直接忽略这个括号,player.*的作用是展开player表的所有字段,最终返回拆分后的多个独立列,而非元组。

如何用player.*获取元组形式结果?

需要用行构造函数把player.*包裹起来,强制将所有字段打包成元组,不同数据库的语法大致如下:

通用写法(适配多数数据库)

SELECT
    ROW(player.*) AS player
FROM
    player

PostgreSQL 专属简洁写法

PostgreSQL支持直接用表名代表整行记录,可简化为:

SELECT
    player AS player
FROM
    player

执行后就能得到和第一种写法一致的元组形式结果:

+----------------+
| player         |
+----------------+
| (1,Bob,Smith)  |
+----------------+
| (2,John,Smith) |
+----------------+

内容的提问来源于stack exchange,提问作者Fred Hors

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:20:29