Postgres将子查询结果括在括号中

时间:2017-10-03 06:39:27

标签: postgresql

不要注意所提供查询的无用性,它只是复杂问题的简化部分。

我运行查询:

SELECT elem FROM (SELECT id FROM data) AS elem;

产生结果:

 elem 
------
 (5)
 (4)
 (24)
 (3)
 (23)

为什么每个值都括在括号中?

所以,为了解决这个问题,我做了:

SELECT trim(elem::text, ')(') FROM (SELECT id FROM data) AS elem;

我感觉不应该那样......

3 个答案:

答案 0 :(得分:1)

SELECT elem.id FROM(SELECT id FROM data)AS elem;

答案 1 :(得分:1)

https://www.postgresql.org/docs/9.6/static/rowtypes.html#ROWTYPES-USAGE

  

在PostgreSQL中,对查询中的表名(或别名)的引用是   有效地引用表格当前的复合值   行

以及更进一步的查询示例,关于括号的进一步说明:

  

复合值的外部文本表示由   根据I / O转换规则解释的项目   各个字段类型,加上表示的字符   复合结构。装饰由括号组成((和))   围绕整个值,加上相邻项之间的逗号(,)。

此处也有一些相关内容:https://www.postgresql.org/docs/current/static/sql-expressions.html#SQL-SYNTAX-ROW-CONSTRUCTORS

答案 2 :(得分:0)

您选择行。改为选择列:

SELECT elem FROM (SELECT id FROM data) AS tbl(elem);