使用多个SELECT创建新表

时间:2016-11-22 14:58:11

标签: mysql database

请参阅下图:

enter image description here

给定original表,我需要在服务器上创建MySQL中的derived表。

使用CREATE TABLE ... AS SELECT DISTINCT...我可以使用derived列创建Category表格,但是徒劳地尝试创建Category_count列。你能指出如何解决这个问题吗?

甚至不满意MySQL或SQL,因此请求。

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

如果表格不存在

,请使用以下内容
CREATE TABLE derived AS
SELECT Category, COUNT(*) AS Category_count 
FROM original 
GROUP BY Category

如果表已存在并且未创建重复的行,请使用以下内容:

INSERT INTO derived (Category, Category_count)
SELECT Category, COUNT(*) AS Category_count 
FROM original o 
WHERE NOT EXISTS (SELECT * FROM derived d WHERE d.Category = o.Category)
GROUP BY Category  

使用以下内容更新已存在的行

UPDATE derived LEFT JOIN (
    SELECT Category, COUNT(*) AS Category_count 
    FROM original 
    GROUP BY Category
)x ON derived.Category = x.Category
SET derived.Category_count = x.Category_count

答案 1 :(得分:0)

选择catoregy,count(id)作为category_count从catoregy从原始组派生