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

误将表名作为查询列创建的特殊SQL视图属于什么类型?

问题解答

你创建的是普通SQL视图,用到的是PostgreSQL特有的**复合类型(行类型)**语法特性:

  • 你编写的create myview as select node from node join othertable using (id)语句中,select后的node不是列名,是将node表匹配到的整行数据作为一个复合类型值返回,视图中仅存储了一个类型为node表对应行类型的字段,字段名默认和表名一致为node。
  • select (node).* from myview是PostgreSQL提供的复合类型字段展开语法:当你需要将复合类型字段里存储的整行数据拆分为多个单独列返回时,需要给复合类型字段名加括号避免语法解析歧义,再加.*即可展开所有字段。

如果你需要搜索相关资料,可以使用以下关键词:

  • PostgreSQL 复合类型
  • PostgreSQL row type
  • PostgreSQL composite type dot notation

补充说明:该用法仅在PostgreSQL中支持,其他主流数据库(MySQL、Oracle、SQL Server等)不支持将整行作为单个字段返回的语法,也不支持对应的(列名).*展开写法。

内容的提问来源于stack exchange,提问作者Cemre Mengü

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:21:00