Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecionando palavras aleatórias da tabela


Você pode adicionar uma coluna, por exemplo. word_length que contém o comprimento da palavra e adicione um índice no word_length coluna. Normalmente, seria um design ruim incluir dados que podem ser derivados de outra coluna, mas, neste caso, você precisa quebrar a pureza por causa do desempenho. Então sua consulta pode usar um JOIN condição usando esta coluna:
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

Você pode usar INSERT e UPDATE acionadores para preencher o word_length coluna automaticamente.

Também pode ser útil fazer a concatenação após filtrar as 5 linhas:
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