2013-11-15 99 views
2

我想问你一些关于mysql的帮助。我想合并2个绝对不同的表格,其中包含日期列。表看起来像这样:解决方案:Mysql从2个不同的表中选择并合并结果

TAB1:

NAMECOLUMN |  DATECOLUMN 
------------------------------ 
itemname1 |  2013-01-01 
itemname2 |  2013-02-02 
itemname3 |  2012-04-01 

TAB2:

OTHERCOLUMN |  DATECOLUMN 
------------------------------ 
xyz   |  2013-01-31 
abcd  |  2013-01-02 
efgh  |  2012-03-01 

,我想有结果按时间排序:

OTHERCOLUMN |  NAMECOLUMN  DATECOLUMN 
--------------------------------------------- 
(null)  |  itemname1  2013-01-01 
xyz   |  (null)   2013-01-31 
abcd  |  (null)   2013-01-02 
(null)  |  itemname2  2013-02-02 
efgh  |  (null)   2012-03-01 
(null)  |  itemname3  2012-04-01 

感谢您对我的方式:)

+0

你如何看待的结果记录(S)在两个表中的DATECOLUMN中都有类似日期的记录? – Nicolai

回答

3

试试这个:

SELECT * 
FROM (
    SELECT NULL AS othercolumn, NAMECOLUMN, datecolumn 
    FROM tab1  
    UNION 
    SELECT otherColumn, NULL, dateColumn 
    FROM tab2 
) a 
ORDER BY datecolumn 

sqlfiddle demo

编辑:

根据您的新表3,你可以这样做:

SELECT * 
FROM (
    SELECT NULL as otherColumn, t1.NAMECOLUMN, t3.category,t3.type, t1.datecolumn 
    FROM tab1 t1  
    INNER JOIN tab3 t3 ON t1.tab3id = t3.id 
    UNION 
    SELECT otherColumn, NULL,NULL,NULL, dateColumn 
    FROM tab2 
) a 
ORDER BY datecolumn; 

sqlfiddle demo

+0

良好的使用联盟+1我也张贴相同,但有点晚:) –

+0

亲爱的菲利普,我更新了sqlfiddle,我也有第三张桌子(我没有提前:))你可以请。帮我完成它? :) http://sqlfiddle.com/#!2/3feab/1/0 –

+0

@FredericoRossini。这第三个表格有不同的结构。你想如何将它与其他表格联系起来? –

0

您可以试试:

SELECT namecolumn, othercolumn, t2.datecolumn 
FROM Tab1 t1, Tab2 t2; 

0

选择null作为OTHERCOLUMN,名称列,DATECOLUMN FROM TAB1

UNION

选择OTHERCOLUMN,null作为名称列,DATECOLUMN FROM TAB2

相关问题