logo

SQL-ORDNING GENOM Slumpmässig

Om du vill att den resulterande posten ska vara beställs slumpmässigt , bör du använda följande koder enligt flera databaser.

Här är en fråga: vad är behovet av att hämta en slumpmässig post eller en rad från en databas?

Ibland kanske du vill visa slumpmässig information som artiklar, länkar, sidor , etc., till din användare.

Om du vill hämta slumpmässiga rader från någon av databaserna måste du använda några ändrade frågor enligt databaserna.

    Välj en slumpmässig rad med MySQL:

Om du vill returnera en slumpmässig rad med MY SQL, använd följande syntax:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Välj en slumpmässig rad med Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Välj en slumpmässig rad med SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Välj en slumpmässig rad med oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Välj en slumpmässig rad med IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

För att förstå detta koncept praktiskt, låt oss se några exempel med hjälp av MySQL-databasen. Tänk att vi har skapat en tabell i databasen med följande data:

Tabell: föremål

ID Föremålsnamn Item_Quantity Varupris Inköpsdatum
1 Tvål 5 200 2021-07-08
2 Tandkräm 2 80 2021-07-10
3 Penna 10 femtio 2021-07-12
4 Flaska 1 250 2021-07-13
5 Borsta 3 90 2021-07-15

Anta att vi vill hämta en slumpmässig post från objekttabellen.

Vi kommer att skriva frågan så här:

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

Vi kan få följande resultat:

ID Föremålsnamn Item_Quantity Varupris Inköpsdatum
3 Penna 10 tjugo 2021-07-12

Låt oss nu försöka köra samma fråga en gång till.

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

Vi kan få följande resultat:

ID Föremålsnamn Item_Quantity Varupris Inköpsdatum
5 Borsta 3 90 2021-07-15

Från ovanstående resultat kan vi dra slutsatsen att vi får olika poster som utdata båda gångerna trots att vi körde samma fråga två gånger. RAND ()-funktionen har valt slumpmässiga poster båda gångerna för samma fråga från en enda tabell. Därför, även om vi kör samma fråga igen, kommer vi att få olika utdata varje gång. Det finns en sällsynt möjlighet att få samma post i följd med RAND ()-funktionen.

Anta nu att du vill att alla poster i tabellen ska hämtas slumpmässigt.

För att göra det måste vi köra följande fråga:

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

Vi kan få följande resultat:

ID Föremålsnamn Item_Quantity Varupris Inköpsdatum
4 Flaska 1 250 2021-07-13
5 Borsta 3 90 2021-07-15
1 Tvål 5 200 2021-07-08
2 Tandkräm 2 80 2021-07-10
3 Penna 10 femtio 2021-07-12

Det finns också en möjlighet att få några olika arrangemang av poster om vi kör RAND ()-funktionen igen på arbetstabellen.