sexta-feira, 4 de abril de 2014

Concatenando registros no MySQL

Olá galera,

Há um tempo atrás, fiz um post sobre concatenar registros no PostgreSQL e no SQL Server. Você pode vê-lo clicando aqui. Se você pesquisar no Google, verá que no MySQL não tem muito segredo. Mostrarei somente uma dica para consultas que envolvem muitos registros.

Supondo que precisamos coletar e-mails de um banco de dados para enviar um e-mail de marketing.

SELECT GROUP_CONCAT(DISTINCT c.email SEPARATOR '; ') FROM clientes c;

O resultado da consulta acima já retorna TODOS os e-mails correto ?! ERRADO. O limite padrão para o tamanho desse resultado é de 1024 bytes. Para que o resultado possa ser exibido na sua totalidade é necessário acrescentar mais um comando nesse script.

    SET SESSION group_concat_max_len = 1000000;
    SELECT GROUP_CONCAT(DISTINCT c.email SEPARATOR '; ') FROM clientes c;
  

No script acima, modifiquei o valor padrão para 1000000 bytes através da variável de sistema group_concat_max_len.

Espero que a dica tenha sido útil.

Um grande abraço a todos e até a próxima.

Nenhum comentário:

Postar um comentário