logo

ORDRE SQL PAR ALÉATOIRE

Si vous souhaitez que l'enregistrement résultant soit commandé au hasard , vous devez utiliser les codes suivants selon plusieurs bases de données.

Voici une question : quelle est la nécessité de récupérer un enregistrement aléatoire ou une ligne d'une base de données ?

Parfois, vous souhaiterez peut-être afficher des informations aléatoires telles que articles, liens, pages , etc., à votre utilisateur.

Si vous souhaitez extraire des lignes aléatoires de l'une des bases de données, vous devez utiliser des requêtes modifiées en fonction des bases de données.

    Sélectionnez une ligne aléatoire avec MySQL :

Si vous souhaitez renvoyer une ligne aléatoire avec MY SQL, utilisez la syntaxe suivante :

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Sélectionnez une ligne aléatoire avec Postgre SQL :
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Sélectionnez une ligne aléatoire avec SQL Server :
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Sélectionnez une ligne aléatoire avec Oracle :
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Sélectionnez une ligne aléatoire avec IBM DB2 :
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Pour comprendre ce concept pratiquement, voyons quelques exemples utilisant la base de données MySQL. Considérons que nous avons des éléments de table créés dans la base de données avec les données suivantes :

tri des bulles Java

Tableau : éléments

IDENTIFIANT Nom de l'article Article_Quantité Prix ​​de l'article Date d'achat
1 Savon 5 200 2021-07-08
2 Dentifrice 2 80 2021-07-10
3 Stylo dix cinquante 2021-07-12
4 Bouteille 1 250 2021-07-13
5 Brosse 3 90 2021-07-15

Supposons que nous souhaitions récupérer un enregistrement aléatoire de la table des éléments.

Nous écrirons la requête comme suit :

chaîne séparée en Java
 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Nous pouvons obtenir les résultats suivants :

IDENTIFIANT Nom de l'article Article_Quantité Prix ​​de l'article Date d'achat
3 Stylo dix vingt 2021-07-12

Essayons maintenant d'exécuter la même requête une fois de plus.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Nous pouvons obtenir les résultats suivants :

IDENTIFIANT Nom de l'article Article_Quantité Prix ​​de l'article Date d'achat
5 Brosse 3 90 2021-07-15

À partir des résultats ci-dessus, nous pouvons conclure que nous obtenons des enregistrements différents en sortie les deux fois, même si nous avons exécuté la même requête deux fois. La fonction RAND() a sélectionné des enregistrements aléatoires les deux fois pour la même requête à partir d'une seule table. Par conséquent, même si nous exécutons à nouveau la même requête, nous obtiendrons un résultat différent à chaque fois. Il existe une rare possibilité d'obtenir le même enregistrement consécutivement en utilisant la fonction RAND().

Supposons maintenant que vous souhaitiez que tous les enregistrements de la table soient récupérés de manière aléatoire.

Pour ce faire, nous devons exécuter la requête suivante :

 mysql> SELECT * FROM items ORDER BY RAND (); 

Nous pouvons obtenir les résultats suivants :

IDENTIFIANT Nom de l'article Article_Quantité Prix ​​de l'article Date d'achat
4 Bouteille 1 250 2021-07-13
5 Brosse 3 90 2021-07-15
1 Savon 5 200 2021-07-08
2 Dentifrice 2 80 2021-07-10
3 Stylo dix cinquante 2021-07-12

Il existe également une possibilité d'obtenir des arrangements différents pour les enregistrements si nous exécutons à nouveau la fonction RAND() sur la table des employés.