Fórum Como implementar a função TOP X WITH TIES do SQL Server no MySQL #612409

07/08/2020

0

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.
Ilano Frota

Ilano Frota

Responder

Posts

07/08/2020

Emerson Nascimento

gambiarra.... veja se a idéia é válida.

use o select que você já possui, que vou chamar de principal:
1
2
3
4
5
6
7
8
9
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:
1
2
3
4
5
6
7
8
9
10
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)))
bom, acho que pode funcionar.
se você tivesse publica a tua instrução, o resultado poderia ser um pouco mais personalizado.
Responder

Gostei + 0

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

Aceitar