在SQL查询中恢复表名

时间:2017-04-27 15:42:10

标签: sql postgresql

我认为这是一个愚蠢的问题,但是有可能恢复SQL查询中每列的表名吗?例如,如果我的查询是:

true

我想恢复像这样的东西

Select e.empno,e.sal,d.deptno
FROM emp e JOIN dept d
ON e.deptno = d.deptno
WHERE e.job = 'Analyst'

我使用postgresql

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

当结果被设置回客户端时,它没有任何显示或格式化。我从PSQL的上下文中假设这个问题,在这种情况下,您并不是指实际获取表的列名,而是指查询结果的显示格式。 PSQL调用此扩展显示。您可以在启动psql后使用\x启用它,也可以使用--expanded标志启动psql。

\x
Expanded display is on.

test=# SELECT * FROM ( VALUES (1,2,3),(4,5,6) ) AS t(foo,bar,baz);
-[ RECORD 1 ]
foo | 1
bar | 2
baz | 3
-[ RECORD 2 ]
foo | 4
bar | 5
baz | 6

如果您指的是以显示格式实际知道列的来源,则无法执行此操作。 SQL仅维护结果集。它不知道发起数据的表在哪里。

而且,无论如何这都没有多大意义,这会显示出什么......

SELECT *
FROM (
  SELECT a
  FROM foo
) AS t;

它会将表格显示为t还是a

这个怎么样......

SELECT a+1 AS b, 'b' AS a
FROM (
  SELECT a
  FROM foo
) AS t;

你可以看到傻得快。

答案 1 :(得分:0)

别名是否符合您的要求?

Select e.empno "emp empno"
,e.sal "emp sal"
,d.deptno "dept deptno"

FROM emp e JOIN dept d ON e.deptno = d.deptno
WHERE e.job = 'Analyst'