Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Auswahl zufälliger Wörter aus der Tabelle

Sie können eine Spalte hinzufügen, z. word_length die die Länge des Wortes enthält, und fügen Sie einen Index zu word_length hinzu Säule. Normalerweise wäre es ein schlechtes Design, Daten einzubeziehen, die aus einer anderen Spalte abgeleitet werden können, aber in diesem Fall müssen Sie die Reinheit aus Leistungsgründen brechen. Dann kann Ihre Abfrage einen JOIN verwenden Bedingung mit dieser Spalte:

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

Sie können INSERT verwenden und UPDATE Trigger zum Ausfüllen der word_length Spalte automatisch.

Es kann auch hilfreich sein, die Verkettung nach dem Filtern bis auf die 5 Zeilen durchzuführen:

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