Pular para o conteúdo principal
Documentos
FunçõesExpressõesKeywordsDeclaraçõesCláusulas

Função MySQL GROUP_CONCAT()

A função `GROUP_CONCAT()` do MySQL concatena valores de várias linhas em uma única cadeia de caracteres, agrupados por uma coluna especificada. Essa função é particularmente útil para criar listas separadas por vírgulas a partir de resultados agrupados.

Uso

O `GROUP_CONCAT()` é usado quando você precisa agregar dados de cadeia de caracteres de várias linhas em uma única linha. Normalmente, é usado junto com a cláusula `GROUP BY` para fornecer resultados agrupados significativos. Se `GROUP BY` for omitido, `GROUP_CONCAT()` concatenará todas as linhas em uma única cadeia de caracteres em todo o conjunto de dados.

sql
GROUP_CONCAT([DISTINCT] expression [ORDER BY expression ASC|DESC] [SEPARATOR 'separator'])

Nessa sintaxe, `expressão` representa a coluna ou o valor a ser concatenado, e `SEPARADOR` define o delimitador entre os valores concatenados. O separador padrão é uma vírgula.

Exemplos

1. Concatenação básica

sql
SELECT GROUP_CONCAT(first_name) 
FROM employees;

Este exemplo concatena todos os valores de `first_name` da tabela `employees` em uma única cadeia de caracteres, separados por vírgulas.

2. Concatenação agrupada

sql
SELECT department, GROUP_CONCAT(last_name) 
FROM employees
GROUP BY department;

Aqui, a função `GROUP_CONCAT()` concatena os valores de `last_name` para cada `department`, gerando uma lista separada por vírgulas de sobrenomes por departamento.

3. Separador ordenado e personalizado

sql
SELECT department, GROUP_CONCAT(last_name ORDER BY last_name ASC SEPARATOR '; ')
FROM employees
GROUP BY department;

Esse exemplo não apenas agrupa os sobrenomes por departamento, mas também os ordena em ordem alfabética dentro de cada grupo e usa ponto e vírgula e espaço como separador.

Dicas e práticas recomendadas

  • Limite o comprimento da saída. Use `SET SESSION group_concat_max_len = value;` para ajustar o comprimento máximo da cadeia de caracteres do resultado para evitar truncamento.
  • Use o DISTINCT com sabedoria. Aplique `DISTINCT` em `GROUP_CONCAT()` se você precisar eliminar valores duplicados em resultados concatenados.
  • Selecione os separadores apropriados. Escolha um separador que não entre em conflito com o conteúdo dos dados para garantir clareza e consistência.
  • Combine com ORDER BY. Utilize `ORDER BY` em `GROUP_CONCAT()` para controlar a ordem dos valores concatenados, melhorando a legibilidade.
  • Garanta o agrupamento adequado. Sempre use `GROUP BY` com `GROUP_CONCAT()` para agregar corretamente os valores pela categoria desejada.
  • Considere o desempenho. Esteja ciente das possíveis implicações de desempenho ao usar `GROUP_CONCAT()` em grandes conjuntos de dados, pois isso pode aumentar o tempo de processamento e o uso de recursos.

Aprimoramento de SQL para iniciantes

Adquira as habilidades de SQL para interagir com seus dados e consultá-los.
Comece a aprender de graça