在Postgres中,这样的查询:
SELECT a.id, b.id FROM table1 a INNER JOIN table2 b on a.id=b.id;
将返回' deconflicted'列名如:
a.id,b.id
但是,在Oracle中,id
列只保留其原始名称:
id,id
我的问题是我的后续工具被重复的列名混淆了。
在这个例子中,我只列出了2列,但实际上有100列,我宁愿不必全部列出。
有没有办法在不必指定所有列名的情况下执行此操作(有100个')。
答案 0 :(得分:0)
试试这个:
SELECT a.id as 'table1 a', b.id as 'table2 b' FROM table1 a INNER JOIN table2 b on a.id=b.id group by a.id, b.id;
您可以使用as
后跟名称命名结果。如果您想使用JOIN
,则必须使用GROUP BY
,如果您不想要重复值,则必须使用所选项目。
答案 1 :(得分:0)
您可以通过修复id
:
join
的特定问题
SELECT *
FROM table1 a INNER JOIN
table2 b
USING (id);
如果id
是唯一重复的列,那么这可以解决您的问题。
答案 2 :(得分:0)
我怀疑不会因为表名(或别名)不是必需的。 例如,以下是适用于Oracle的SQL,但在列命名中没有可用的前缀。
SELECT * FROM
(select 1 a, 2 b from dual)
join
(select 1 a, 3 b from dual)
using (a)
但我认为Postgres要求那些FROM子查询是别名的