sql >> Databasteknik >  >> RDS >> Mysql

MYSQL Välj en slumpmässig post från varje kategori

Den här frågan returnerar alla objekt som är kopplade till kategorier i slumpmässig ordning:

SELECT
c.id AS cid, c.category, i.id AS iid, i.name
FROM categories c
INNER JOIN items i ON c.id = i.category
ORDER BY RAND()

För att begränsa varje kategori till en, slå in frågan i en delvis GROUP BY :

SELECT * FROM (
    SELECT
    c.id AS cid, c.category, i.id AS iid, i.name
    FROM categories c
    INNER JOIN items i ON c.id = i.category
    ORDER BY RAND()
) AS shuffled_items
GROUP BY cid

Observera att när en fråga har både GROUP BY och ORDER BY klausul utförs grupperingen före sortering. Det är därför jag har använt två frågor:den första sorterar resultaten, den andra grupperar resultaten.

Jag förstår att den här frågan inte kommer att vinna något race. Jag är öppen för förslag.



  1. Är det bra att använda ContentProvider för att hantera databasoperationer?

  2. Hur man migrerar från MSSQL till MySQL

  3. Postgresql escape enda citat i where-klausul

  4. Hur man filtrerar SQL resulterar i en har-många-genom-relation