两个联合的左连接结果

时间:2019-04-23 21:07:42

标签: mysql left-join union

尝试合并这两个信息并创建一个新表。我的目标是添加创建年份和月份表

例如

t1 is
Year
1990
1991
1992

t2 is
Jan
Feb 
Mar

我希望所有可能的组合都放在一个表中。

1990-Jan
1990-Feb
1990-Mar
1991-Jan
1992-Feb... 

这就是为什么我没有在代码中添加任何条件的原因。

   SELECT b.year
    FROM 
    (
    SELECT year from barcelona.births
    UNION 
    SELECT year from barcelona.immigrants_by_age
    )
    AS b
left join a.month,
    FROM 
    (
    SELECT month 
    from barcelona.unemployment
    UNION 
    SELECT month from barcelona.accidents
    )
    AS a
;

1 个答案:

答案 0 :(得分:0)

您可以使用以下解决方案:

INSERT INTO new_table_name (create_year, create_month) 
    SELECT t1.create_year, t2.create_month FROM t1, t2

如果您想将这些值合并在一起,可以使用以下命令:

INSERT INTO new_table_name (create_year_month) 
    SELECT CONCAT_WS('-', t1.create_year, t2.create_month) FROM t1, t2

使用JOIN(或像在解决方案,上一样)而没有条件(没有ON)会在两个表的行之间创建每种可能的组合。通过使用INSERT INTO ... SELECT ...,您可以在一个查询中SELECTINSERT到新表中选择选定的值。

demo on dbfiddle.uk


您的查询应如下所示:

SELECT b.`year`, a.`month`
FROM (
    SELECT `year` FROM barcelona.births
    UNION 
    SELECT `year` FROM barcelona.immigrants_by_age
) AS b, (
    SELECT `month` FROM barcelona.unemployment
    UNION 
    SELECT `month` from barcelona.accidents
) AS a