sql >> Base de Datos >  >> RDS >> Mysql

MySQL:busque la misma cadena en varias columnas

Solución sencilla:

SELECT * 
FROM projects 
WHERE 
    CONCAT(category,name,description,keywords,type) LIKE '%query%' 
ORDER BY name ASC;

Puede agregar separadores entre columnas si es necesario:

SELECT * 
FROM projects 
WHERE 
    CONCAT(category,"|",name,"|",description,"|",keywords,"|",type) LIKE '%query%' 
ORDER BY name ASC;

También puede usar una búsqueda de texto completo (debe crear un índice de texto completo como se describe aquí:¿Cómo funcionan los ÍNDICES DE TEXTO COMPLETO en varias columnas? )

SELECT *, MATCH (category,name,description,keywords,type) AGAINST ('query') AS score FROM projects WHERE MATCH (category,name,description,keywords,type) AGAINST ('query');