Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, alguém sabe se é possível selecionar registros utilizando rand e limit para buscar apenas os últimos registros no banco automaticamente?
Ha ideia é que pegue apenas uma quantidade x de registros e esses sejam exibidos de forma randômica porém apenas os últimos registros selecionados por exemplo apenas os últimos 5
Eu pensei em utilizar BETWEEN porém só sei definir de forma manual por id talvez a logica esteja errado da forma abaixo funciona porém é manual eu estou setando o intervalo de id que eu quero, porem queria esse intervalo de forma automatica
**SELECT * FROM tabela WHERE id BETWEEN 1 AND 5 AND ativo = 1 ORDER BY RAND() LIMIT 1**
Com essa query ele me exibi de 1 a 5 mais como id são auto incremento como pegar de forma automática e jogar ai? ou outra forma ?
Obg desde de á pro qualquer ajuda
Tipo assim no meu select ali funciona de forma aleatória como eu quero a query ele exibi os últimos ou primeiros em fim o intervalo que eu quiser porem eu tenho que por o id de forma manual ou seja o 1 e 5, mais quando tiver mais registros no não vai selecionar pq ja passou dos id setados
de forma aleatoria que eu falo é usando RAND() nessa minha query abaixo ele exibi de forma aleatoria os registros de id 1 a 5 e somente aleotoriamente entre esses
**SELECT * FROM tabela WHERE id BETWEEN 1 AND 5 AND ativo = 1 ORDER BY RAND() LIMIT 1**
O único problema dessa minha query é que não pega os id de forma manual, os id vão aumentando conforme registros vão sendo inseridos e queria pegar esses últimos de forma automatica como na query
Ou uma forma que não sei tipo selecionar apenas os 10 últimos registros sem usar BETWEEN, confuso nisso talvez a logica, mais resumindo é pegar somente os ultimos registros registros entre x e x e exibir
tente
select *
from
(
**SELECT * FROM tabela WHERE id BETWEEN 1 AND 5 AND ativo = 1 **
) virtual
ORDER BY RAND()
Olá Motta, então dessa forma ai o id ainda continua sendo colocado de forma manual, vamos tentar ser mais claro acho que me expressei mal
Imagine um sistema de noticias e vc quer pegar as ultimas 5 noticias somente as ultimas 5 noticias ai dessas ultimas noticias vc quer exibir 1 ou 2 entre somente essas 5 de forma aleatoria o que é feito com o rand() então sera exibido a cada atualização somente 1 ou 2 noticias dentre essas ultimas 5 que vc selecionou
Seria algo como
--ultimas noticias
select *
from noticias
order by data_publicacao desc
limit 5
--destas publicar 2 aleatoriamente
select *
from
(
select *
from noticias
order by data_publicacao desc
limit 5
) virtual
order by rand()
limit 2
Talvez tenha erros de sintaxe , mas creio que vala a ideia.
Aleatoriamente os n últimos , confesso não ter entendido.