MySQL – уникальные значения PHP из строк

У меня есть эта таблица: таблица 1

+----+-----------------------+----------+------+-------+ | ID | COUNTRY | QUANTITY | EACH | PRICE | +----+-----------------------+----------+------+-------+ | 1 | USA | 1 | 12 | 1*12 | | 2 | UK | 2 | 3 | 2* 3 | | 3 | GERMANY | NULL | 3 | | | 4 | FRANCE;GERMANY; USA | 0 | 7 | | | 5 | USA;GERMANY | 3 | 8 | 3*8 | | 6 | FRANCE;UK | 1 | 10 | 1*10 | | 7 | USA;FRANCE | 2 | 6 | 2*6 | | 8 | FRANCE;FRANCE | 9 | 3 | 9*3 | +----+-----------------------+----------+------+-------+ 

и этот код sql:

 SELECT COUNTRY, SUM(COALESCE(IF(QUANTITY = NULL OR QUANTITY = 0,1,QUANTITY), 1) * EACH) AS PRICE FROM table1 GROUP BY COUNTRY 

Как я могу сделать уникальные значения для столбца страны и вернуть: USA = 48 (ID: 1 + 5 + 7); UK = 6; ГЕРМАНИЯ = 3; ФРАНЦИЯ = 44 (ID: 4 + 6 + 8). Я хочу, чтобы строки, содержащие две, три, четыре страны, были ликвидированы и оставались только первой страной из ряда. Спасибо!

Используйте substring_index чтобы получить первую страну в ; -сепаратированный список.

 SELECT SUBSTRING_INDEX(COUNTRY, ';', 1) AS COUNTRY SUM(IF(QUANTITY IS NULL OR QUANTITY = 0,1,QUANTITY) * EACH) AS PRICE FROM table1 GROUP BY COUNTRY 

Было бы намного сложнее, если бы вы хотели сохранить все строки, в которых появляется каждая страна (в этом случае я бы рекомендовал делать это в PHP, а не в MySQL, поскольку MySQL не имеет встроенного способа делать explode() ).