Ordem aleatória com paginação MySql

29/06/2017

0

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
Jonas

Jonas

Responder

Posts

30/06/2017

Lincon Silva

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


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
Responder

30/06/2017

Bruno

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
Responder

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

Aceitar