2016-05-24 2 views
3

Таблица:MySQL, как объединить аналогичные записи в таблице

ID/Имя/Тип/вкус/Score

1/Кокс/яблоко/хорошее/NULL

2/Кокс/груша/NULL/6

3/Bob/яблоко/большой/NULL

4/Rod/груша/NULL/9

5/King/груша/NULL/3

6/King/яблоко/плохой/NULL

Как вы можете видеть: 'яблоки' имеют значение 'Вкус', но не «Score ' «Груши» не имеют значения «Вкус», но имеют «Счет».

Я хочу объединить их вместе, чтобы, если две записи имеют одно и то же «Имя», они становятся одной записью со значением «Вкус», взятым из Apple и «Score», взятым из Pear.

Когда выше таблица используется, выход я хочу, как это:

ID/Имя/Тип/вкус/Score

1/Кокс/яблоко/хорошее/6

3/Bob/яблоко/большой/NULL

4/Rod/груша/NULL/9

5/King/груша/плохой/3

Я использую MySQL и PHP. Я думаю, это можно сделать с помощью обоих.

+0

и как вы выбираете поле типа? (Яблоко/груша)? –

ответ

2

Вы можете сделать это с помощью условной агрегации:

SELECT min(t.id),t.name,min(t.Type), 
     MAX(CASE WHEN t.type = 'apple' then t.taste END) as taste, 
     MAX(CASE WHEN t.type = 'pear' then t.Score END) as Score 
FROM YourTable t 
GROUP BY t.name 
+0

это работает спасибо. – user3278770

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