Ho bisogno di selezionare le righe casualmente. Es: supponiamo, un tavolo consta di 100 record, ma ho bisogno di ottenere solo 20 record da quei 100 record e la selezione dei record sarà in modo casuale .. come potrei uscirne? Sto usando Oracle come mio db. qualsiasi suggerimento mi sarebbe di grande aiuto. Grazie in anticipo ..Come ottenere i record casualmente dal database di Oracle?
risposta
SELECT *
FROM (
SELECT *
FROM table
ORDER BY DBMS_RANDOM.VALUE)
WHERE rownum < 21;
SELECT column FROM
(SELECT column, dbms_random.value FROM table ORDER BY 2)
where rownum <= 20;
Per selezionare in modo casuale 20 righe penso che sarebbe meglio selezionando l'molti di loro ordinato in modo casuale e selezionando il primo 20 di quel set.
Qualcosa di simile:
Select *
from (select *
from table
order by dbms_random.value) -- you can also use DBMS_RANDOM.RANDOM
where rownum < 21;
Migliore utilizzo tavolini per evitare di selezionare grandi blocchi di dati solo per scartare la maggior parte di esso.
SAMPLE() non è garantiti per darvi esattamente 20 righe, ma potrebbe essere adatto (e possono eseguire significativamente migliore di una query full + sort-by-casuale per tabelle di grandi dimensioni):
SELECT *
FROM table SAMPLE(20);
Nota : il 20
qui è una percentuale approssimativa, non il numero di righe desiderato. In questo caso, dato che hai 100 righe, per ottenere circa 20 righe chiedi un campione del 20%.
è veloce ma non sembra essere molto casuale. i record verso la parte superiore/all'inizio della tabella tendono a essere favoriti. – craigrs84
che succederà se si interrompe la query prima che attraversi l'intera tabella. –
Scusa se ho commesso un errore, il tuo post va bene e i risultati sono equamente distribuiti. È quando aggiungi "where rownum <= 20" in combinazione con sample (20) che i dati iniziano a diventare meno casuali. – craigrs84
SELECT * FROM table SAMPLE(10) WHERE ROWNUM <= 20;
Questo è più efficiente in quanto non è necessario ordinare la tabella.
L'arresto del campione dopo 20 righe comporta risultati non casuali (le righe trovate in precedenza nella tabella verranno restituite molto più spesso di quelle successive). Inoltre, questo non è garantito per restituire 20 righe. –
- 1. Come inserire record 50K nel database Oracle?
- 2. Come ottenere record casuali dal database MS Access
- 3. Oracle ottiene i record del giorno precedente
- 4. problema con ottenere i dati dal database
- 5. mysql seleziona SOLO record duplicati dal database
- 6. Come generare a livello di codice DDL dal database Oracle?
- 7. Come eliminare dal database in tempo reale di Firebase?
- 8. Come ottenere i metadati del database dal gestore dell'entità
- 9. Come ottenere dati dal database Parse.com
- 10. Ottenere tutti i record da SQLite Android
- 11. Archiviazione di record dal database PostgreSQL che superano la timeline
- 12. Hibernate ottenere l'elenco dal database
- 13. PDO ottenere dati dal database
- 14. Come sincronizzare due database Oracle?
- 15. come trovare la partizione del record oracle
- 16. Come ottenere un datetime in formato 24 ore dal database Oracle?
- 17. Oracle SELECT TOP 10 record
- 18. Ottenere l'ID di un nuovo record inserito in un database dal tornato Uri
- 19. visualizzazione onchange Record GridView se esiste dal database utilizzando Javascript
- 20. come memorizzare i valori di BigInteger nel database Oracle
- 21. Come leggere i dati dal database SQLite?
- 22. Rimuovi tutti i duplicati dal database Redshift
- 23. Ottenere mesi distinti dal database utilizzando HQL
- 24. Quali sono i modi per inserire e recuperare i dati BLOB dal database Oracle utilizzando SQL?
- 25. Ottenere longitudine e latitudine simili dal database
- 26. Numero di record nell'istruzione di inserimento (Oracle)
- 27. Come ottenere l'ultimo record
- 28. Come ottenere i dati dal cursore in ContextMenu
- 29. Database DB2 nello sviluppatore Oracle Oracle
- 30. Record di modellazione del database come tipi
Non dovrebbe essere 'DBMS_RANDOM.VALUE'? – Filburt
Anche questo funziona. – cagcowboy
Mi picchia. Ciò tuttavia selezionerà solo le prime 20 righe dal tavolo e le ordinerà a caso. –