Я знаю, что я, вероятно, слишком неуместен в этом вопросе, но поскольку поисковый ответ от Google уже несколько раз направлял меня сюда, я хотел бы поделиться своим решением, для более сложной аналогичной проблемы.
Решение GROUP_CONCAT(DISTINCT ...)
, как указал gbn, прекрасно, пока вы на самом деле не получите несколько одинаковых значений или почти равны, как а и .
Я исключил ключевое слово из запроса и решил проблему с PHP. Если вам нужно только отличить á от простого array_unique
, то добьетесь цели.
К сожалению, мне не так повезло, и у меня тоже были ровные значения, которые мне нужно было сохранить. Рассмотрим примеры значений, возвращаемых из запроса к базе данных group_concat
поле, развернутое в массиве:
$values = array( 'Value1','Value1','Value2','Value2','Value2','Value2' );
Теперь как-то различай, сколько дубликатов ты имеешь ввиду. Я сделал следующее:
$x=0;
$first = reset($values);
while($first === $values[$x]) $x++;
Вышеупомянутое решение работает, только если ваше действительное первое и второе значения никогда не совпадают, что в моем случае было верно. Если это не так с вами, найдите другой способ узнать, сколько дубликатов вы имеете дело.
Наконец, просто сбросьте все дополнительные значения по модулю:
foreach($values as $k => $v){
if($k%$x !== 0) unset($values[$k]);
}
Вот и все. Печать значений $ сейчас даст вам:
Array
(
[0] => Value1
[2] => Value2
[4] => Value2
)