我认为这是一个愚蠢的问题,但是有可能恢复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
感谢您的帮助
答案 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'