2012-07-26 2 views
1

Je crée une plate-forme de publicité pour mon site Web, où nous avons besoin de sélectionner 3 lignes au hasard et le nombre de fois de l'affichage de la bannière doit également être équilibré.Sélectionnez au hasard 3 rangées égal nombre de fois

On peut obtenir les lignes aléatoires comme celui-ci,

SELECT column FROM table ORDER BY RAND() LIMIT 0,3

et nous pouvons équilibrer le nombre de fois par incrémenter champ de comptage en sélectionnant la ligne à chaque fois et sélectionner les lignes avec moins nombre comme celui-ci,

SELECT * FROM table ORDER BY display_count LIMIT 0,3. Mais il va retourner les valeurs comme 1,2,3, 4,5,6 et ainsi. Mais j'ai besoin de sélectionner des rangées avec un nombre minimum aléatoire. Toute suggestion ou idée à ce sujet serait géniale?

+0

Pouvez-vous poster quelques exemples de données avec résultat attendu? – Madhivanan

Répondre

1

est ce que vous cherchez:

SELECT * 
FROM table 
ORDER BY display_count ASC, RAND() 
LIMIT 0,3; 
0

Avez-vous essayé

SELECT column FROM table ORDER BY RAND(), display_count LIMIT 0,3 

? Je pense que c'est ce que vous voulez.

+0

Cela ne fonctionne pas :( – Stranger

+0

J'ai testé et a bien fonctionné Pouvez-vous me dire pourquoi ne fonctionne pas? – TheGiantBeast

Questions connexes