2016-12-04 7 views
-2

У меня есть запрос.Выбор правой колонки

with result as 
(
select t1.name, t1.number, t2.number from table1 t1, table2 t2 where some conditions 
union all 
select t1.name, t1.number, t3.number from table1 t1, table3 t3 where some conditions 
)select * from result 

мне нужно вставить в table5 t1.name и t2.number

table5 имеет те же столбцы, как t1.

Если я что-то вроде

insert in table5(name, number) 
select r.name, r.number from result r 

, что будет считаться r.number? t1.number или t2.number? Поскольку столбцы имеют одинаковое имя. Или есть способ дефференцировать? Как я могу сделать так, чтобы запрос пропускал каждую строку с номером t3.number? Могу ли я это сделать?

Например, я TABLE1

A (+1)11111111 
B (+1)22222222 
C (+1)33333333 

table2

(+2)44444444 
(+2)55555555 

первого выбора получит мне

A (+1)11111111 (+2)44444444 
B (+1)22222222 (+2)55555555 

Таблица3

(+3)66666666 
(+3)88888888 
(+3)97898789 

результат второго выбора

B (+1)22222222 (+3)88888888 
C (+1)33333333 (+3)97898789 

это будет результатом объединения всех

A (+1)11111111 (+2)44444444 
B (+1)22222222 (+2)55555555 
B (+1)22222222 (+3)88888888 
C (+1)33333333 (+3)97898789 

, что я хочу, в конце концов

A (+2)44444444 
B (+2)55555555 

конечный результат не должен иметь эти строки

B (+1)22222222 (+3)88888888 
C (+1)33333333 (+3)97898789 
+0

Он очень похож на вопрос, который вы разместили [здесь] (http://stackoverflow.com/questions/40932491/accessing-aliased-tables), и я считаю, что некоторые из ответов, которые у вас были там, могут даже быть полезным для этого вопроса – Aleksej

+0

@Ale довольно похож, но также имеет некоторые отличия. –

+0

Что значит «запрос пропускает каждую строку с t3.number»? Можете ли вы разместить некоторые данные примера и что вам нужно получить от этого? data – Aleksej

ответ

0

Оба. В некоторых строках t2.number - number, а в других - t3.number - number.

Результат union all в одном результирующем наборе. Результирующий набор не знает происхождения значений в любом конкретном столбце (хотя вы могли бы включить другой столбец с этой информацией).

+0

Итак, в результате оба столбца будут иметь одно и то же имя, и не будет способа рассказать их обособленно? –

+0

@EugeneCuz. , ,Если вы не указали другой столбец, указывающий источник. –

+0

Ну, 't1.number' и' t2.number' можно легко отличить, используя псевдонимы. Наверное, вы действительно говорите о 't2.number' и' t3.number' здесь. –

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

  • Нет связанных вопросов^_^