sql >> Databasteknik >  >> RDS >> Mysql

Välja slumpmässiga ord från tabellen

Du kan lägga till en kolumn, t.ex. word_length som innehåller längden på ordet, och lägg till ett index på word_length kolumn. Normalt skulle det vara dålig design att inkludera data som kan härledas från en annan kolumn, men i det här fallet måste du bryta renheten för prestanda skull. Då kan din fråga använda en JOIN villkor med denna kolumn:

SELECT CONCAT(w1.my_word, w2.my_word) joined
FROM my_words w1
JOIN my_words w2 ON w1.word_length = 8 - w2.word_length
WHERE w2.word_length < 8
ORDER BY RAND()
LIMIT 5

Du kan använda INSERT och UPDATE utlösare för att fylla i word_length kolumnen automatiskt.

Det kan också vara bra att göra sammanfogningen efter att ha filtrerat ner till de 5 raderna:

SELECT CONCAT(word1, word2) joined
FROM (
    SELECT w1.my_word word1, w2.my_word word2
    FROM my_words w1
    JOIN my_words w2 ON w1.word_length = 8 - w2.word_length
    WHERE w2.word_length < 8
    ORDER BY RAND()
    LIMIT 5) x


  1. Webbplats för förkortning av URL

  2. PostgreSQL procedurspråk C hittades inte

  3. Korstabellbegränsningar i PostgreSQL

  4. Hur skapar man en global konfigurationsfil?