Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir des enregistrements aléatoires à partir d'une liste pré-filtrée à l'aide d'une sous-requête MySQL ?

J'ai cherché mais je n'ai pas trouvé de solution efficace. Besoin d'un peu d'aide ici.

Supposons que j'ai une table avec plus de 100 enregistrements, je dois d'abord trouver les 20 premiers enregistrements dans un certain ordre, puis je dois choisir au hasard 5 enregistrements parmi ces 20 enregistrements. C'est ma requête,

SELECT a 
FROM tableA 
WHERE b IN (
    SELECT b 
    FROM tableA 
    WHERE c="x" 
    ORDER BY d DESC 
    LIMIT 20
) 
ORDER BY RAND() 
LIMIT 5;

Faites-moi savoir comment le corriger. Merci.

P粉776412597P粉776412597186 Il y a quelques jours446

répondre à tous(1)je répondrai

  • P粉863295057

    P粉8632950572024-04-03 00:11:25

    La requête interne sélectionne 20 utilisateurs triés par ID, la requête externe utilise la fonction RAND() pour trier aléatoirement, avec une limite de 5 :)

    SELECT * FROM 
    (
        SELECT * FROM A ORDER BY id desc LIMIT 20
    ) T1
    ORDER BY rand() limit 5

    répondre
    0
  • Annulerrépondre