Como implementar a função TOP X WITH TIES do SQL Server no MySQL
Olá pessoal,
Tenho uma consulta que me traz os candidatos inscritos. Nela tenho que trazer os 45 primeiros registros. Até aí tudo bem, só basta ordenar por ID e fazer um LIMIT 45 e tá resolvido. Porém, existe um outro critério, a idade. Preciso trazer além dos 45 primeiros inscritos os demais que têm a mesma idade, ou seja, se o 45º candidato tiver 30 anos e o 46º, 47º, ... também tiverem 30 anos precisam aparecer.
Alguém tem como me ajudar nisso?
Grato,
Ilano.
Tenho uma consulta que me traz os candidatos inscritos. Nela tenho que trazer os 45 primeiros registros. Até aí tudo bem, só basta ordenar por ID e fazer um LIMIT 45 e tá resolvido. Porém, existe um outro critério, a idade. Preciso trazer além dos 45 primeiros inscritos os demais que têm a mesma idade, ou seja, se o 45º candidato tiver 30 anos e o 46º, 47º, ... também tiverem 30 anos precisam aparecer.
Alguém tem como me ajudar nisso?
Grato,
Ilano.
Ilano Frota
Curtidas 0
Respostas
Emerson Nascimento
07/08/2020
gambiarra.... veja se a idéia é válida.
use o select que você já possui, que vou chamar de principal:
e faça um union all com a própria select principal que terá - além dos filtros que você ja tem - um filtro por idade, mas não terá o limit:
instrução completa:
bom, acho que pode funcionar.
se você tivesse publica a tua instrução, o resultado poderia ser um pouco mais personalizado.
use o select que você já possui, que vou chamar de principal:
select bla, bla, bla from bla where bla, bla, bla order by id limit 45
e faça um union all com a própria select principal que terá - além dos filtros que você ja tem - um filtro por idade, mas não terá o limit:
select bla, bla, bla from bla where bla, bla, bla and idade = (select idade from tabela where id = (select max(id) from (select principal)))
instrução completa:
select bla, bla, bla from bla where bla, bla, bla order by id limit 45 union all select bla, bla, bla from bla where bla, bla, bla and idade = (select idade from tabela where id = (select max(id) from (select principal)))
se você tivesse publica a tua instrução, o resultado poderia ser um pouco mais personalizado.
GOSTEI 0