Как включить значения из двух таблиц в один столбец - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть следующий запрос:

select
    t1.x,
    t2.y

from table1 t1
    join table2 t2
        on t1.x = t2.x

, который дает следующие результаты:

x   y1
x   y2
x   y3

Я, однако, хочу, чтобы он выдал следующее, где значение из t1.x также находится во втором столбце:

x   x
x   y1
x   y2
x   y3

Есть ли простой способ сделать это?Я пытаюсь добиться этого в PostgreSQL, но мне также было бы интересно любое решение в MySQL.

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Похоже, вы хотите:

select t1.x, t1.x as y
from table1 t1
union all
select t2.x, t2.y
from table2 t2;

join требуется только в том случае, если вы хотите отфильтровать (или умножить) строки, исходя из того, что x находится в обеих таблицах.

0 голосов
/ 22 февраля 2019

Я не уверен, что это то, что вам нужно.Но я подозреваю, что вам просто нужно LEFT JOIN с некоторыми изменениями:

SELECT
    t1.x,
    COALESCE(t2.y, t1.x)
FROM table1 t1
LEFT JOIN table2 t2
ON t1.x = t2.x
0 голосов
/ 22 февраля 2019

Вы можете использовать UNION:

select
    x,
    x as y
from table1
union
select
    t1.x,
    t2.y
from table1 t1
    join table2 t2
on t1.x = t2.x
order by x

или

select
    t1.x,
    t1.x
from table1 t1
    join table2 t2
on t1.x = t2.x
union
select
    t1.x,
    t2.y
from table1 t1
    join table2 t2
on t1.x = t2.x
order by x 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...