2016-11-22 2 views
1

Пожалуйста, смотрите изображение ниже:Создание новой таблицы с использованием нескольких ВЫБИРАЕТ

enter image description here

Учитывая original таблицы, мне нужно создать derived таблицу в MySQL на сервере.

С CREATE TABLE ... AS SELECT DISTINCT... Я могу создать derived таблицу с Category колонки, но тщетно пытаясь создать Category_count столбец. Не могли бы вы указать, как это решить?

Не очень удобно с MySQL или SQL, даже с запросом.

Большое спасибо заранее!

+0

Я рекомендую вам использовать VIEW, если вы собираетесь обновлять ту же таблицу, вид, как «виртуальную таблицу «делать что-то вроде: Создать вид Получено как SELECT Category, COUNT (*) AS Category_count FROM original И затем, когда вы делаете« Выбрать * из производного », он отображает значения исходной таблицы, с видом выбор –

+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' работает безупречно. Но после создания 'производных' и запуска' INSERT INTO', существующие столбцы повторяются. Любое исправление для этого? –

+0

повторяющиеся столбцы невозможны, но возможны повторяющиеся строки. см. обновление –

+0

Ой, я имел в виду дубликаты ** строк **, а не _columns_, извините за путаницу. «UPDATE» тоже работает, спасибо! –

0

Выберите catoregy, счет (идентификатор), как category_count в полученный из исходной группы по catoregy

+0

Привет, Prasanna Kumar, спасибо, что заглянул. Ответ Себастьяна Броша щелкнул меня. –

Смежные вопросы