Recuperer les 10 derniers enregistrements puis en prendre 4 aléatoirem

Recuperer les 10 derniers enregistrements puis en prendre 4 aléatoirem - SQL/NoSQL - Programmation

Marsh Posté le 25-02-2010 à 11:11:03    

Bonjour,
 
Petite problématique MYSQL à vous exposer :
 
Comment peut on en une requête, récupérer les 10 derniers enregistrements d'une table et en prendre 4 aléatoirement sur les 10.
 
La table "test" est constituée de deux champs 'id' et 'date'.
 
la requête pour récupérer les 10 derniers champs et la suivante

Code :
  1. select id from test ORDER BY date DESC LIMIT 10;


 
Mais comment faire pour ensuite récupérer 4 enregistrements aleatoirement sur les 10.
 
Merci !

Reply

Marsh Posté le 25-02-2010 à 11:11:03   

Reply

Marsh Posté le 25-02-2010 à 11:17:33    

comme ça ? (pas testé, à la louche)

Code :
  1. SELECT id
  2. FROM test
  3. WHERE id IN (SELECT id FROM test ORDER BY date DESC LIMIT 10) ORDER BY RAND() LIMIT 4


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-02-2010 à 11:26:16    

Merci de ton aide mais ma version de mysql ne supporte pas le LIMIT avec un IN.

Code :
  1. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Reply

Marsh Posté le 25-02-2010 à 11:48:17    

Code :
  1. SELECT * FROM (SELECT id FROM test ORDER BY date DESC LIMIT 10) as a ORDER BY RAND() LIMIT 4;

Reply

Marsh Posté le 25-02-2010 à 12:10:22    

c'était la 1ere solution que j'avais en tête, je sais qu'elle marche sous SQL Server, mais je savais pas si elle marchait sous MySQL :D


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed