Problemet här är att du kontrollerar förekomsten av l
dubbelt. Det är samma sak som... "Den innehåller en l
. Japp, innehåller fortfarande en l
." Det letar inte efter två av dem. Här är ett alternativ...
SELECT word FROM us_6 WHERE
word REGEXP 'v' AND
word REGEXP 'l.*l' AND
word REGEXP 'e' AND
word REGEXP 'o' AND
word REGEXP 'y'
Detta bör matcha alla ord som innehåller en v
, två l
's, en e
, en o
och en y
.
Så, varannan förekomst av samma bokstav, lägg bara till en annan .*bokstav till frågan. Till exempel lullaby
behöver följande fråga:
SELECT word FROM us_7 WHERE
word REGEXP 'l.*l.*l' AND
word REGEXP 'u' AND
word REGEXP 'a' AND
word REGEXP 'b' AND
word REGEXP 'y'
Se hur jag lägger till 3 *.l
eftersom det finns 3 förekomster av l
i ordet lullaby
.
Samma sak kan också åstadkommas med LIKE
istället för REGEXP
. Här är en motsvarande fråga för den ursprungliga frågan...
SELECT word FROM us_6 WHERE
word LIKE '%v%' AND
word LIKE '%l%l%' AND
word LIKE '%e%' AND
word LIKE '%o%' AND
word LIKE '%y%'