Bobrinha 4 Denunciar post Postado Julho 11, 2016 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
Motta 645 Denunciar post Postado Julho 11, 2016 Aleatoriamente os n últimos , confesso não ter entendido. Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Julho 11, 2016 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
Motta 645 Denunciar post Postado Julho 11, 2016 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
Bobrinha 4 Denunciar post Postado Julho 11, 2016 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
Motta 645 Denunciar post Postado Julho 11, 2016 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