1

如果给定列(year_id)没有值(null),我如何合并 ONE 列中的两列

表格1

id    txt      year_id      date
----------------------------------
1     text1      1
2     text2      2
3     text3      3
4     text4               2013-01-02
5     text5               2013-01-03

表 2

id    year     
----------------
1     2009     
2     2010      
3     2011     
4     2012

我需要这样的结果

id    txt      merge_column   
-------------------------
1     text1      2009
2     text2      2010
3     text3      2011
4     text4   2013-01-02
5     text5   2013-01-03

提前谢谢你,这个查询让我的想法复杂化..谢谢

4

3 回答 3

3

JOIN 两个表首先使用COALESCE()or IFNULL()

SELECT  a.id,
        a.txt,
        COALESCE(b.year, a.date) merge_column
FROM    table1 a
        LEFT JOIN table2 b
            ON a.year_id = b.id
于 2013-05-23T02:25:38.730 回答
1
SELECT t1.id, txt, IFNULL(date, year) merge_column
FROM table1 t1
LEFT JOIN table2 t2 ON t1.year_id = t2.id
于 2013-05-23T02:26:14.407 回答
0

您将需要将值转换为通用类型。我认为字符串是最有可能的。

select t1.id, t1.txt,
       coalesce(date_format(t2.date, '%y-%m-%d'), cast(t2.year as varchar(32))
from table1 t1 left join
     table2 t2
     on t1.year_id = t2.id
于 2013-05-23T02:28:57.293 回答