Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bobrinha

selecionar com rand e limit apenas os últimos registros é possível?

Recommended Posts

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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aleatoriamente os n últimos , confesso não ter entendido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente

 

 

select *

from

(

SELECT * FROM tabela WHERE id BETWEEN 1 AND 5 AND ativo = 1

) virtual

ORDER BY RAND()

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.