我在MySQL中有两个表:
表1
age code
20 ABC
15 DEF
32 ABC
45 DEF
表2
geo code
POLYGON ABC
POLYGON DEF
POLYGON GHI
我在表1中使用相同的“代码”计算了双重寄存器
SELECT code
,COUNT(code
)AS cnt
FROM table1
GROUP BY code
HAVING(cnt> 0)
导致:
code cnt
ABC 2
DEF 2
我想将此结果与表2结合起来并创建第三个表:
表3
geo code cnt
POLYGON ABC 2
POLYGON DEF 2
POLYGON GHI 0
这可能吗?
答案 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
然后,我们所要做的就是将其插入我们的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;