MYSQL,如果值对尚不存在,则创建行

时间:2019-05-15 12:19:28

标签: mysql

我有一张各个国家的年度数据表。

并非所有国家/地区的数据年数都相同。

如果没有国家/年对的行,则表示该值为0。

我正在尝试建立一个查询,该查询将使用JOIN添加年份,而0用于尚不存在的行。

当前代码:

CREATE TABLE years SELECT DISTINCT acq_year FROM final_data;

SELECT * FROM final_data CROSS JOIN years;

1 个答案:

答案 0 :(得分:1)

我假设您的年度数据表的名称为 final_data ,其列为 country acq_year data

    CREATE TEMPORARY TABLE years SELECT DISTINCT acq_year FROM final_data;

    CREATE TEMPORARY TABLE countries_years
        SELECT fd1.country, fd1.acq_year FROM
            (SELECT DISTINCT country, years.acq_year FROM final_data join years) fd1
            LEFT JOIN final_data fd2 ON fd1.country = fd2.country AND fd1.acq_year = fd2.acq_year
            WHERE fd2.acq_year IS null;

    INSERT INTO final_data(country, acq_year, data)
        SELECT country, acq_year, 0 FROM countries_years;