Quiero buscar registros donde un campo particular COMIENCE CON alguna cadena (digamos "ar") O ese campo CONTIENE la cadena, "ar".Condiciones ponderadas en la cláusula WHERE de una instrucción SQL
Sin embargo, considero que las dos condiciones son diferentes, porque estoy limitando el número de resultados devueltos a 10 y quiero que la condición de ARRANQUES CON mayor peso que la condición CONTIENE.
Ejemplo:
SELECT *
FROM Employees
WHERE Name LIKE 'ar%' OR Name LIKE '%ar%'
LIMIT 10
El problema es que es que si hay nombres que comienzan con "ar" deben ser favorecidos. La única forma en que debería recuperar un nombre que simplemente CONTIENE "ar" es si hay MENOS de 10 nombres que INICIAN con "ar"
¿Cómo puedo hacer esto contra una base de datos MySQL?
+1. De acuerdo, esto es más eficiente. – mellamokb
Esto parece funcionar para mí. ¿Puedes explicarlo en absoluto?Entiendo (en términos generales) lo que significa unión. ¿Cuáles son las X e Y y qué es el 1 y el 2? –
@Stephen - X e Y son solo alias dados a las subconsultas (cada tabla derivada debe tener un alias, de modo que se puedan referenciar si es necesario). Puede agregar una columna a cualquier conjunto de resultados, simplemente dando un valor y nombrando (aliasing) la columna. En este caso, agregué una columna llamada "Preferido" con un valor de 1 en la primera parte y un valor de 2 en la segunda parte. Las columnas ahora son parte del resultado (para la consulta saliente). – RichardTheKiwi