如果给定列没有值,则MYSQL合并在一列中

时间:2013-05-23 02:22:21

标签: mysql sql

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

表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

提前谢谢,这个查询使我的思绪变得复杂..谢谢

3 个答案:

答案 0 :(得分:3)

首先使用COALESCE()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

答案 1 :(得分:1)

SELECT t1.id, txt, IFNULL(date, year) merge_column
FROM table1 t1
LEFT JOIN table2 t2 ON t1.year_id = t2.id

答案 2 :(得分: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