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