O problema aqui é que você está verificando a presença de
l
duas vezes. Isso é o mesmo que... "Ele contém um l
. Sim, ainda contém um l
." Não está verificando dois deles. Aqui está uma alternativa... 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'
Isso deve corresponder a todas as palavras que contêm um
v
, dois l
's, um e
, um o
, e um y
. Assim, a cada duas ocorrências da mesma letra, basta acrescentar outra .*letra à consulta. Por exemplo,
lullaby
precisa da seguinte consulta: 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'
Veja como eu adiciono 3
*.l
porque existem 3 ocorrências de l
na palavra lullaby
. A mesma coisa também pode ser feita com
LIKE
em vez de REGEXP
. Aqui está uma consulta equivalente para a pergunta original ... 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%'