sql >> Database >  >> RDS >> Mysql

Willekeurige woorden uit de tabel selecteren

U kunt een kolom toevoegen, b.v. word_length die de lengte van het woord bevat, en voeg een index toe aan de word_length kolom. Normaal gesproken zou het een slecht ontwerp zijn om gegevens op te nemen die uit een andere kolom kunnen worden afgeleid, maar in dit geval moet u de zuiverheid verbreken omwille van de prestaties. Dan kan je zoekopdracht een JOIN . gebruiken voorwaarde met behulp van deze kolom:

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

U kunt INSERT . gebruiken en UPDATE triggers om de word_length . in te vullen kolom automatisch.

Het kan ook handig zijn om de samenvoeging uit te voeren nadat u naar de 5 rijen hebt gefilterd:

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. SELECT die een lijst met waarden retourneert die in geen enkele rij voorkomen

  2. MySQL ERROR 2026 - SSL-verbindingsfout - Ubuntu 20.04

  3. SQL-BEPERKINGEN

  4. Symfony2:Basistabel of weergave niet gevonden:1146