Możesz dodać kolumnę, np. word_length
który zawiera długość słowa i dodaje indeks do word_length
kolumna. Zwykle kiepskim projektem byłoby uwzględnienie danych, które mogą pochodzić z innej kolumny, ale w tym przypadku należy złamać czystość ze względu na wydajność. Następnie w zapytaniu można użyć JOIN
warunek przy użyciu tej kolumny:
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
Możesz użyć INSERT
i UPDATE
wyzwalacze do wypełnienia word_length
kolumna automatycznie.
Pomocne może być również wykonanie konkatenacji po przefiltrowaniu do 5 wierszy:
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