试图让我的头脑围绕如何编写此SQL查询。

表X具有3列:YearIDValue,看起来像这样

Year   |   ID   |     Value
2013       101        10000
2014       101        11000
2015       101        12000
2013       102        7000
2014       102        8000
2015       102        9000


并且表Y具有3列:IDCurr_Year_ValNext_Year_Val,看起来像这样

ID   |  Curr_Year_Val   | Next_Year_Val
101        13000                  14000
102        6000                   5000


我想编写一条select语句将这两个表连接在一起,但是要保持表X的布局,如下所示:

Year           |    ID    |    Value
2013               101         10000
2014               101         11000
2015               101         12000
Curr_Year_Val      101         13000
Next_Year_Val      101         14000


有没有办法达到这个结果?我已经弄清楚了如何只做左联接以将表y的列添加到表x,而是宁愿将表y的列取消透视表到表x的行。在此先感谢您-似乎应该很简单,我已经搜寻了几个小时,但是我可能没有在搜索中使用正确的术语。

谢谢!

最佳答案

听起来您应该使用union all

select year, id, value from x
union all
select 'curr_year_val', id, curr_year_val from y
union all
select 'next_year_val', id, next_year_val from y
order by 2, 1



SQL Fiddle Demo


顺便说一句,使用union时,其他数据库将要求您所有列的数据类型相同。但是,这对于mysql是有效的。

关于mysql - MySQL将表y中的2列连接到表x的行中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37145565/

10-12 07:15