2016-12-26 6 views
0

Допустим, у меня есть 2 таблицы A, B. В обеих таблицах (id) есть общий столбец, а остальные столбцы dynamic.so записывают запрос на печать идентификатора «A» и оставляют все столбцы. A (id, название, город), B (id, phone, phone_num). Здесь я знаю только «ID» столбец, отдых столбцы (название, город, телефон) которые идут динамично, поэтому я не могу использовать a.name, A.city, B.phone и т.д. .ВКак печатать все столбцы, когда столбцы являются динамическими, и присутствует один общий столбец?

select * from A FULL OUTER JOIN B ON A.id = B.id; 

является печать id дважды.

+0

Не понял, в чем проблема. Покажите примеры данных и ожидаемый результат. –

+0

Можете ли вы использовать динамический SQL? – GurV

ответ

1

Если вы хотите отобразить id co lumn только один раз, использовать предложение using для объединения:

SELECT * 
FROM tableA a 
    JOIN tableB b using (id) 

Предложение using в том смысле, что столбец (ы) присоединиться включаются только один раз с select *.

+0

благодарю вас. Работает для меня !! – Sidhartha

0

Если я не ошибаюсь, вы хотите отобразить весь столбец как таблиц, так и общего столбца, т. Е. Идентификатор должен появляться только один раз. Если это так, используйте приведенный ниже запрос и замените имя столбца на имена столбцов вы хотите отобразить.

SELECT a.id,a.column1,a.column2,b.column1,b.column2 
FROM tableA a 
INNER JOIN tableB b ON a.id=b.id 
+0

Да, но в моем случае я не знаю остальных имен столбцов. Так что я не могу использовать a.column1, a.column2,, b.column1, b.column2. – Sidhartha

+0

@Sidhartha Как вы не можете знать имена столбца. Это временная таблица? –

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

+0

Но это не печатает значения. Оно показывает только количество записей. – Sidhartha

+0

Нет «статического» способа извлечения всех столбцов, кроме одного. Это можно сделать только в динамическом коде, и вы можете создать список столбцов. –

Смежные вопросы