2016-11-22 8 views
1

Bitte das Bild unten:eine neue Tabelle mit mehreren SELECTs Erstellen

enter image description here

Angesichts der original Tisch, muss ich die derived Tabelle in MySQL auf dem Server erstellen.

Mit CREATE TABLE ... AS SELECT DISTINCT... Ich kann die derived Tabelle mit den Category Spalt erstellen, aber vergeblich versucht, die Category_count Spalt zu erstellen. Können Sie uns bitte darauf hinweisen, wie Sie das lösen können?

Nicht sehr komfortabel mit MySQL oder SQL sogar, daher die Anfrage.

Vielen Dank im Voraus!

+0

Ich empfehle Ihnen einen Blick zu verwenden, wenn Sie die gleiche Tabelle zu gehen, zu aktualisieren, eine Ansicht ist wie eine „virtuelle Tabelle "etwas wie machen: Ansicht erstellt als SELECT Kategorie abgeleitet, COUNT (*) AS Category_count FROM Original Und dann, wenn Sie eine" Select * from Derived "tun, wird es die Werte der ursprünglichen Tabelle mit der Ansicht zeigen Auswahl –

+0

@ RicardoOrtegaMagaña, danke! Ich brauche ** "abgeleitet", um eine _table_ zu sein, obwohl. –

Antwort

1

Verwenden Sie die folgenden Punkte, wenn die Tabelle nicht nicht existiert:

CREATE TABLE derived AS 
SELECT Category, COUNT(*) AS Category_count 
FROM original 
GROUP BY Category 

Gehen Sie folgendermaßen, wenn die Tabelle bereits und ohne Erstellung von doppelten Zeilen besteht:

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 

für Folgendes verwenden Aktualisierung der Zeilen bereits vorhanden:

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

Hallo Sebastian Brosch, danke! 'CREATE TABLE' funktioniert einwandfrei. Nach dem Erstellen von "derived" und dem Ausführen von "INSERT INTO" wiederholen sich die vorhandenen Spalten. Irgendeine Reparatur für das? –

+0

doppelte Spalten sind nicht möglich, aber doppelte Zeilen waren möglich. siehe Update –

+0

Hoppla, ich meinte Duplikate ** Zeilen **, nicht _Spalten_, Entschuldigung für die Verwirrung. Das 'UPDATE' funktioniert auch, danke! –

0

Select catoregy, count (id) als category_count in von der ursprünglichen Gruppe abgeleitet von catoregy

+0

Hallo Prasanna Kumar, danke fürs reinschauen. Die Antwort von Sebastian Brosch klickte für mich. –

Verwandte Themen