Mysql
 sql >> Database >  >> RDS >> Mysql

Selezione di parole casuali dalla tabella

Puoi aggiungere una colonna, ad es. word_length che contiene la lunghezza della parola e aggiungi un indice su word_length colonna. Normalmente sarebbe una cattiva progettazione includere dati che possono essere derivati ​​da un'altra colonna, ma in questo caso è necessario interrompere la purezza per motivi di prestazioni. Quindi la tua query può utilizzare un JOIN condizione utilizzando questa colonna:

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

Puoi usare INSERT e UPDATE attiva la compilazione di word_length colonna automaticamente.

Potrebbe anche essere utile eseguire la concatenazione dopo aver filtrato fino alle 5 righe:

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