Dúvida com variável MySQL

08/06/2022

0

Caros,
Estou analisando uma query no MySQL e não consigo entender como funciona uma determinada variável.

Alguém pode me explicar como ela atua? sei que ela cria uma sequência (uma espécie de contador de números repetidos denominado como campo nuSerie), mas como ela está fazendo isso não tenho ideia.
O que que gostaria de uma explicação (para um leigo entender mesmo) são esses trechos:
(SELECT @r := 0, @prevcol := null) x
@r := CASE WHEN tm_dado.dsGroup = @prevcol THEN @r + 1 WHEN (@prevcol := tm_dado.dsGroup) = null THEN null ELSE 1 END AS nuSerie

Query:

SELECT
tm_dado.coRecarga,
tm_dado.nuImsi,
tm_dado.coMsisdnHistorico,
@r := CASE WHEN tm_dado.dsGroup = @prevcol THEN @r + 1 WHEN (@prevcol := tm_dado.dsGroup) = null THEN null ELSE 1 END AS nuSerie
FROM
(SELECT
tb_recarga.coRecarga,
tb_recarga.nuImsi,
tb_msisdn_historico.coMsisdnHistorico,
CONCAT(tb_recarga.coRecarga,tb_recarga.nuImsi) as dsGroup
FROM tb_recarga
JOIN tb_msisdn_historico ON tb_recarga.nuImsi = tb_msisdn_historico.nuImsi
WHERE tb_recarga.dtCadastro >= CURDATE() - INTERVAL 1 DAY AND CURDATE()-1
) as tm_dado, (SELECT @r := 0, @prevcol := null) x
ORDER BY tm_dado.dsGroup,tm_dado.coMsisdnHistorico DESC
Reinaldo

Reinaldo

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar