Mysql, выберите идентификатор, сгруппированный по отдельному столбцу (выберите все идентификаторы для каждого уникального домена)

Итак, у меня есть таблица MySQL:

Table Data: id | domain | title | Full Url to Page | ... etc ... 1 | place.com | Place Something | http://place.com/1... 2 | place.com | Place Something Else | http://place.com/2... 3 | place.com | Some Other Place | http://place.com/3... 4 | pets.com | Cats Dogs Oh My | http://pets.com/2.... 5 | pets.com | Bird Edition | http://pets.com/3.... 

Мне нужно (в PHP / JQuery) – получить массив идентификаторов для каждого уникального домена. Итак, конечный результат, который я хочу для приведенной выше таблицы:

 $finalArray = array('place.com' => array(1, 2, 3), 'pets.com' => array(4, 5)); 

Мое текущее решение состоит в том, чтобы захватить все строки, упорядоченные по домену,

 SELECT `id`, `domain` FROM `gsort_linkdata` ORDER BY `domain` 

Что возвращает:

 1 | place.com 2 | place.com 3 | place.com 4 | pets.com 5 | pets.com 

Затем я просматриваю строки в PHP и разбиваю их на массивы. Я бы предпочел вытащить уже разбитые данные из базы данных. Это возможно? Спасибо!

Вы можете использовать GROUP_CONCAT :

 SELECT GROUP_CONCAT(`id`), `domain` FROM `gsort_linkdata` GROUP BY `domain` 

(Имейте в виду group_concat_max_len .)

Но поскольку нет способа передать массив из MySQL в PHP, вам нужно разделить полученную строку на PHP или JS, поэтому я думаю, что ваш текущий метод является лучшим. Ваш метод безопасен и действительно просто однострочный в PHP, что-то еще (в том числе GROUP_CONCAT) сложнее.