sql >> Databáze >  >> RDS >> Mysql

Výběr náhodných slov z tabulky

Můžete přidat sloupec, např. word_length který obsahuje délku slova a přidejte index na word_length sloupec. Normálně by byl špatný návrh zahrnout data, která lze odvodit z jiného sloupce, ale v tomto případě musíte kvůli výkonu porušit čistotu. Pak může váš dotaz používat JOIN podmínku pomocí tohoto sloupce:

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

Můžete použít INSERT a UPDATE spouští k vyplnění word_length sloupec automaticky.

Může být také užitečné provést zřetězení po filtrování na 5 řádků:

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


  1. CakePHP:Jak nasadit změny schématu DB do produkce bez chyb

  2. Rozdělení řetězce odděleného čárkami v PL/SQL uloženém proc

  3. Nelze zahodit cizí klíč v MySQL

  4. PostgreSQL, drag and swap