Если у вас нет поля hit_id, вам придется использовать пару (unique
, date
) в качестве идентификатора строки. Вы должны быть в состоянии получить то, что вы ищете с чем-то вроде этого.
SELECT `referrer` FROM `hits` h1 INNER JOIN
(SELECT `unique`, MIN(`date`) FROM `hits` GROUP BY `unique`) h2
ON h1.`unique` = h2.`unique` AND h1.`date` = h2.`date`
GROUP BY `referrer`
Если у вас есть первичный ключ, который вы не упомянули, например hit_id, он становится немного короче и спасает вас от редкого случая, когда два попадания происходят от одного и того же пользователя в одну секунду:
SELECT `referrer` FROM `hits` h1 INNER JOIN
(SELECT MIN(`hit_id`) FROM `hits` GROUP BY `unique`) h2
ON h1.`hit_id` = h2.`hit_id`
GROUP BY `referrer`
В обоих случаях последняя функция GROUP BY - просто удалить дубликаты из вашего окончательного набора результатов.