Ordem aleatória com paginação MySql
Olá, Estou precisando ordenar aleatoriamente resultado da minha consulta e exibir paginação usando mysql. A ordenação e paginação estão funcionando perfeitamente.
Sempre quando é feito a paginação, por conta da utilização do ORDER BY RAND(); os resultados são aleatórios e repetidos na paginação.
Gostaria de saber como utilizar o ORDER BY RAND(); para que os registros sempre sejam apresentados aleatórios em cada consulta (não necessariamente em cada pagina) sem repetir nas páginas seguintes.
SELECT * FROM tabela1 WHERE Id= $id ORDER BY RAND() LIMIT $inicial,$final
Sempre quando é feito a paginação, por conta da utilização do ORDER BY RAND(); os resultados são aleatórios e repetidos na paginação.
Gostaria de saber como utilizar o ORDER BY RAND(); para que os registros sempre sejam apresentados aleatórios em cada consulta (não necessariamente em cada pagina) sem repetir nas páginas seguintes.
SELECT * FROM tabela1 WHERE Id= $id ORDER BY RAND() LIMIT $inicial,$final
Jonas
Curtidas 0
Respostas
Lincon Silva
29/06/2017
Jonas, boa tarde.
Pelo que pude entender, você gera a ordenação e faz a paginação cada vez que executa o select. Dessa forma, eu particularmente, desconheço como o RAND poderia identificar os itens que você já mostrou antes e não apresentá-los.
A forma que pensei, que pode até ser considerada uma gambi, é gerar toda a tua consulta em uma table temporária e depois fazer a leitura dela utilizando a paginação.
Não sei se te atende, mas segue abaixo, caso encontre outra solução passa ai pra somar.
abraços
Pelo que pude entender, você gera a ordenação e faz a paginação cada vez que executa o select. Dessa forma, eu particularmente, desconheço como o RAND poderia identificar os itens que você já mostrou antes e não apresentá-los.
A forma que pensei, que pode até ser considerada uma gambi, é gerar toda a tua consulta em uma table temporária e depois fazer a leitura dela utilizando a paginação.
Não sei se te atende, mas segue abaixo, caso encontre outra solução passa ai pra somar.
abraços
create temporary table IF NOT EXISTS teste SELECT id, v1, v2, v3 FROM SUA_TABELA ORDER BY RAND() DESC select * from teste LIMIT 30, 15
GOSTEI 0
Bruno
29/06/2017
Olá, Não sei se é exatamente o que procura mas segundo esse site Site basta colocar um valor no RAND() para trazer uma order diferente o que você pode fazer é utilizar uma função da tua ferramenta exemplo, time que vai ser unico sempre, e etc. O site tem uns exemplos legais
GOSTEI 0