合并 MySQL 中的 2 个表并创建一个新表

Combine 2 tables in MySQL and create a new one

我在 MySQL 中有两个 table:

Table 1

age code
20  ABC
15  DEF
32  ABC
45  DEF

Table 2

geo       code
POLYGON   ABC
POLYGON   DEF
POLYGON   GHI
  1. 我在table1

    上统计了相同"code"的双寄存器

    SELECT code, COUNT(code) 作为 cnt 来自 table1 分组 code 有 (cnt > 0)

结果:

code  cnt
ABC    2
DEF    2

我想将此结果与 Table 2 合并并创建第三个 table:

Table 3

geo      code   cnt
POLYGON  ABC     2
POLYGON  DEF     2
POLYGON  GHI     0

这可能吗?

您可以使用 create table <tablename> as <query> 语法从查询输出创建 table。

因此,我们现在真正需要做的就是设计一个 returns 您想要的结果的查询。这是一个这样的查询:

select geo, t2.code, ifnull(cnt, 0) cnt
  from table2 t2
    left join
      (select code, count(*) cnt
         from table1
         group by code
       ) q1
     on t2.code = q1.code

demo fiddle

然后我们所要做的就是将其插入到我们的 create table 语句中。

create table new_table as
select geo, t2.code, ifnull(cnt, 0) cnt
  from table2 t2
    left join
      (select code, count(*) cnt
         from table1
         group by code
       ) q1
     on t2.code = q1.code;

下面是获得完全相同结果的额外查询:

select t2.geo, t2.code, count(t1.code) cnt
  from table2 t2
    left join table1 t1
      on t1.code = t2.code
  group by t2.code;

updated fiddle