Ele faz coisas estranhas, porque há um produto cruzado de certas linhas. Você pode usar o
DISTINCT
palavra-chave para obter apenas números de telefone exclusivos:GROUP_CONCAT(DISTINCT phones.phone_number) AS phone_numbers,
Verifique a documentação . Como alternativa, você pode obter os números de telefone em outra consulta em que selecionaria apenas os números de telefone com uma condição como
WHERE phones.user_id IN (x, x, x, ...)
(x são IDs retornados da primeira consulta).