Jeśli chcesz, aby wynikowy rekord był zamówione losowo , powinieneś użyć poniższych kodów według kilku baz danych.
Oto pytanie: jaka jest potrzeba pobrania losowego rekordu lub wiersza z bazy danych?
Czasami możesz chcieć wyświetlić losowe informacje, takie jak artykuły, linki, strony itp. dla użytkownika.
Jeśli chcesz pobrać losowe wiersze z dowolnej bazy danych, musisz użyć zmienionych zapytań zgodnie z bazami danych.
Jeśli chcesz zwrócić losowy wiersz z MOIM SQL, użyj następującej składni:
SELECT column FROM table ORDER BY RAND () LIMIT 1;
SELECT column FROM table ORDER BY RANDOM () LIMIT 1;
SELECT TOP 1 column FROM table ORDER BY NEWID ();
SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1;
SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY;
Aby zrozumieć tę koncepcję w praktyce, przejrzyjmy kilka przykładów wykorzystania bazy danych MySQL. Rozważmy, że w bazie danych utworzono elementy tabeli zawierające następujące dane:
sekwencja Fibonacciego w Javie
Tabela: elementy
ID | Nazwa_przedmiotu | Ilość przedmiotów | Cena przedmiotu | Data zakupu |
---|---|---|---|---|
1 | Mydło | 5 | 200 2021-07-08 | |
2 | Pasta do zębów | 2 | 80 | 2021-07-10 |
3 | Długopis | 10 | pięćdziesiąt | 2021-07-12 |
4 | Butelka | 1 | 250 | 2021-07-13 |
5 | Szczotka | 3 | 90 | 2021-07-15 |
Załóżmy, że chcemy pobrać dowolny losowy rekord z tabeli pozycji.
Zapytanie napiszemy w następujący sposób:
Struktury danych Java
mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1;
Możemy uzyskać następujące wyniki:
ID | Nazwa_przedmiotu | Ilość przedmiotów | Cena przedmiotu | Data zakupu |
---|---|---|---|---|
3 | Długopis | 10 | 20 | 2021-07-12 |
Spróbujmy teraz wykonać to samo zapytanie jeszcze raz.
mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1;
Możemy uzyskać następujące wyniki:
ID | Nazwa_przedmiotu | Ilość przedmiotów | Cena przedmiotu | Data zakupu |
---|---|---|---|---|
5 | Szczotka | 3 | 90 | 2021-07-15 |
Z powyższych wyników możemy wywnioskować, że za każdym razem otrzymujemy różne rekordy jako dane wyjściowe, mimo że dwukrotnie wykonaliśmy to samo zapytanie. Funkcja LOS () dwukrotnie wybrała losowe rekordy dla tego samego zapytania z pojedynczej tabeli. Dlatego nawet jeśli ponownie wykonamy to samo zapytanie, za każdym razem otrzymamy inny wynik. Istnieje rzadka możliwość uzyskania tego samego rekordu po kolei za pomocą funkcji LOS ().
Załóżmy teraz, że chcesz, aby wszystkie rekordy tabeli były pobierane losowo.
W tym celu musimy wykonać następujące zapytanie:
mysql> SELECT * FROM items ORDER BY RAND ();
Możemy uzyskać następujące wyniki:
ID | Nazwa_przedmiotu | Ilość przedmiotów | Cena przedmiotu | Data zakupu |
---|---|---|---|---|
4 | Butelka | 1 | 250 | 2021-07-13 |
5 | Szczotka | 3 | 90 | 2021-07-15 |
1 | Mydło | 5 | 200 | 2021-07-08 |
2 | Pasta do zębów | 2 | 80 | 2021-07-10 |
3 | Długopis | 10 | pięćdziesiąt | 2021-07-12 |
Istnieje również możliwość uzyskania innego układu rekordów, jeśli ponownie wykonamy funkcję RAND () na tabeli pracowników.