Comment obtenir des enregistrements au hasard de la firebase database Oracle?

Je dois sélectionner des lignes au hasard. Ex: Supposons qu’une table se compose de 100 enregistrements, mais je n’ai besoin que de 20 enregistrements parmi ces 100 enregistrements et la sélection des enregistrements se fera de manière aléatoire. Comment pourrais-je en sortir? J’utilise oracle comme firebase database. toute suggestion m’aiderait grandement. Merci d’avance..

SELECT * FROM ( SELECT * FROM table ORDER BY DBMS_RANDOM.VALUE) WHERE rownum < 21; 

SAMPLE () n’est pas garanti pour vous donner exactement 20 lignes, mais peut convenir (et peut être nettement meilleur qu’une requête complète + sorting par aléatoire pour les grandes tables):

 SELECT * FROM table SAMPLE(20); 

Remarque: le 20 est un pourcentage approximatif, pas le nombre de lignes souhaité. Dans ce cas, puisque vous avez 100 lignes, pour obtenir environ 20 lignes, vous demandez un échantillon de 20%.

 SELECT * FROM table SAMPLE(10) WHERE ROWNUM <= 20; 

Ceci est plus efficace car il n'est pas nécessaire de sortinger la table.

 SELECT column FROM ( SELECT column, dbms_random.value FROM table ORDER BY 2 ) where rownum <= 20; 

Pour sélectionner au hasard 20 lignes, je pense que vous feriez mieux de sélectionner le nombre de celles-ci au hasard et de sélectionner les 20 premières de cet ensemble.

Quelque chose comme:

 Select * from (select * from table order by dbms_random.value) -- you can also use DBMS_RANDOM.RANDOM where rownum < 21; 

Mieux utilisé pour les petites tables pour éviter de sélectionner de gros morceaux de données uniquement pour en éliminer la majeure partie.