在MySQL中组合2个表并创建一个新表

时间:2015-04-10 16:40:06

标签: php mysql phpmyadmin

我在MySQL中有两个表:

表1

age code
20  ABC
15  DEF
32  ABC
45  DEF

表2

geo       code
POLYGON   ABC
POLYGON   DEF
POLYGON   GHI
  1. 我在表1中使用相同的“代码”计算了双重寄存器

    SELECT code,COUNT(code)AS cnt FROM table1 GROUP BY code HAVING(cnt> 0)

  2. 导致:

    code  cnt
    ABC    2
    DEF    2
    

    我想将此结果与表2结合起来并创建第三个表:

    表3

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

    这可能吗?

1 个答案:

答案 0 :(得分:2)

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

所以我们现在要做的就是制作一个返回所需结果的查询。这是一个这样的查询:

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