Comment obtenir des enregistrements aléatoires à partir d'une liste pré-filtrée à l'aide d'une sous-requête MySQL ?
P粉776412597
P粉776412597 2024-04-02 09:44:53
0
1
558

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粉776412597
P粉776412597

répondre à tous(1)
P粉863295057

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal