假设我有2个表A,B。在两个表(id)中都是公共列,而rest列是dynamic.so写一个查询来打印“A”的id并休息所有列。 A(ID,姓名,市),B(ID,电话,PHONE_NUM)。在这里我只知道“id”列,其余列(名称,城市,电话)是动态的,所以我不能使用A.name,A.city,B.phone等。在
select * from A FULL OUTER JOIN B ON A.id = B.id;
两次打印id列。
答案 0 :(得分:1)
如果您只想显示id
列一次,请使用using
子句进行连接:
SELECT *
FROM tableA a
JOIN tableB b using (id)
using
子句,作为连接列仅包含select *
一次的效果。
答案 1 :(得分:0)
如果我没错,你想要显示两个表和公共列的所有列,即id应该只出现一次。如果是这种情况,请使用下面的查询并用列名替换列名想要展示。
SELECT a.id,a.column1,a.column2,b.column1,b.column2
FROM tableA a
INNER JOIN tableB b ON a.id=b.id
答案 2 :(得分:0)
演示
create table my_table_1 (id int,c1 int,c2 int,c3 int);
create table my_table_2 (id int,c4 int,c5 int);
select array_to_string(array_agg (table_name || '.' || column_name::text),',')
from information_schema.columns
where table_name in ('my_table_1','my_table_2')
and not (table_name,column_name) = ('my_table_2','id')
my_table_1.id,my_table_1.c1,my_table_1.c2,my_table_1.c3,my_table_2.c4,my_table_2.c5