如何在同一列中包含两个表中的值

时间:2019-02-21 21:53:48

标签: mysql sql postgresql

我有以下查询:

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 :(得分:1)

您似乎想要:

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

仅当您要基于两个表中的join来过滤(或相乘)行时,才需要x

答案 1 :(得分:1)

我不确定这是否是您所需要的。但我怀疑您只需要进行一些调整即可LEFT JOIN

SELECT
    t1.x,
    COALESCE(t2.y, t1.x)
FROM table1 t1
LEFT JOIN table2 t2
ON t1.x = t2.x

答案 2 :(得分:0)

您可以使用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