Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélection de mots aléatoires dans le tableau

Vous pouvez ajouter une colonne, par ex. word_length qui contient la longueur du mot, et ajouter un index sur le word_length colonne. Normalement, ce serait une mauvaise conception d'inclure des données qui peuvent être dérivées d'une autre colonne, mais dans ce cas, vous devez casser la pureté pour des raisons de performances. Ensuite, votre requête peut utiliser un JOIN condition en utilisant cette colonne :

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

Vous pouvez utiliser INSERT et UPDATE déclencheurs pour remplir le word_length colonne automatiquement.

Il peut également être utile d'effectuer la concaténation après avoir filtré jusqu'aux 5 lignes :

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