habilitar - mysql cambiar innodb a myisam
MySQL-¿CÓMO HACER PEDIDOS POR RELEVANCIA? Mesa INNODB (1)
Tengo unas 20,000 filas en una tabla INNODB llamadas ''cartas'', por lo que FULLTEXT no es una opción.
Por favor considere esta tabla:
id | name | description
----------------------------------------------------------
1 John Smith Just some dude
2 Ted Johnson Another dude
3 Johnathan Todd This guy too
4 Susan Smith Her too
5 Sam John Bond And him
6 John Smith Same guy as num 1, another record
7 John Adams Last guy, promise
Entonces, digamos que el usuario busca ''John'', quiero que el conjunto de resultados esté en el orden de:
7 John Adams
6 John Smith
3 Johnathan Todd
5 Sam John Bond
2 Ted Johnson
Tenga en cuenta que solo hemos sacado ''John Smith'' una vez, tomamos su entrada más reciente. Debido a mis datos, todos los nombres son para la misma persona exacta, no hay necesidad de preocuparse por 2 tipos diferentes llamados John Smith. Ideas? Avísame si puedo aclarar algo.
versión 1:
SELECT max(id) id, name
FROM cards
WHERE name like ''%John%''
GROUP BY name
ORDER BY CASE WHEN name like ''John %'' THEN 0
WHEN name like ''John%'' THEN 1
WHEN name like ''% John%'' THEN 2
ELSE 3
END, name
versión 2:
SELECT max(id) id, name
FROM cards
WHERE name like ''%John%''
GROUP BY name
ORDER BY CASE WHEN name like ''John%'' THEN 0
WHEN name like ''% %John% %'' THEN 1
WHEN name like ''%John'' THEN 2
ELSE 3
END, name