2016-11-22 7 views
1

を使用して新しいテーブルを作成し、以下の画像を参照してください:は複数のSELECT

enter image description here

originalテーブルを考えると、私は、サーバー上のMySQLにderivedテーブルを作成する必要があります。 CREATE TABLE ... AS SELECT DISTINCT...

私はCategoryコラムでderivedテーブルを作成することができるけど、Category_count列を作成するために無駄にしようとしています。これを解決する方法を親切に指摘できますか?

MySQLやSQLの場合でもそれほど快適ではないので、リクエストしてください。

事前に感謝します。

+0

私はあなたが同じテーブルを更新しようとしている場合はVIEWを使用することをお勧めして、元のグループから派生にcategory_countとして、カウント数(ID)は、ビューは、「仮想テーブルのようなものです SELECTカテゴリから派生したビューを作成する、COUNT(*)ASカテゴリのカテゴリを元にする 「Select * from Derived」を実行すると、元のテーブルの値がビューとともに表示されます選択 –

+0

@RicardoOrtegaMagaña、ありがとう!私は、** _table_であるために**派生する必要があります。 –

答えて

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 
+0

こんにちはセバスチャンブロッシュ、ありがとう! 'CREATE TABLE'は完璧に動作します。しかし、 'derived'を作成し、' INSERT INTO'を実行すると、既存の列が繰り返されます。そのための修正? –

+0

重複列は使用できませんが、重複行は可能です。アップデート –

+0

を参照してください。私は混乱のために申し訳ありません、_columns_ではなく、重複した**行**を意味しました。 'UPDATE'もうまくいきます、ありがとう! –

0

選択catoregy catoregy

+0

こんにちはPrasannaクマール、探していただきありがとうございます。セバスチャンブロッシュの答えが私のためにクリックされました。 –