合并 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
我在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
然后我们所要做的就是将其插入到我们的 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;
我在 MySQL 中有两个 table:
Table 1
age code
20 ABC
15 DEF
32 ABC
45 DEF
Table 2
geo code
POLYGON ABC
POLYGON DEF
POLYGON GHI
我在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
然后我们所要做的就是将其插入到我们的 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;