请参阅下面的图片:创建使用多个选择一个新表
鉴于original
表,我需要在MySQL中创建服务器上的derived
表。
随着CREATE TABLE ... AS SELECT DISTINCT...
我能够创建derived
表与Category
列,但妄图建立Category_count
列。你能指出如何解决这个问题吗?
甚至不太熟悉MySQL或SQL,因此请求。
非常感谢提前!
请参阅下面的图片:创建使用多个选择一个新表
鉴于original
表,我需要在MySQL中创建服务器上的derived
表。
随着CREATE TABLE ... AS SELECT DISTINCT...
我能够创建derived
表与Category
列,但妄图建立Category_count
列。你能指出如何解决这个问题吗?
甚至不太熟悉MySQL或SQL,因此请求。
非常感谢提前!
使用以下如果表不存在:
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
嗨塞巴斯蒂安布罗什,谢谢! “CREATE TABLE”的工作完美无瑕。但是在创建'derived'并运行'INSERT INTO'后,现有的列会重复。任何修补程序? –
重复列是不可能的,但重复行是可能的。请参阅更新 –
糟糕,我的意思是重复的**行**,而不是_columns_,对于混淆抱歉。 'UPDATE'也可以,谢谢! –
选择catoregy,计数(ID)为category_count成从原始组由catoregy
嗨Prasanna Kumar,感谢您的支持。Sebastian Brosch的回答为我点击。 –
我建议你使用视图,如果你将要更新相同的表导出,视图就像是一个“虚拟表“做这样的事情: 创建视图派生的选择类别,COUNT(*)AS Category_count由原来 然后,当你做一个‘SELECT *源自’它会显示原始表的值,与视图选择 –
@RicardoOrtegaMagaña,谢谢!尽管如此,我**需要**'衍生出来'作为_table_。 –