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

Cómo:hacer coincidir (espacio de búsqueda) contra (unir con columna de otra tabla)

Parece que necesita usar una expresión de coincidencia de TEXTO COMPLETO en su condición de unión.

Nunca he usado una coincidencia de texto completo en una condición de combinación, así que no estoy seguro de que esto funcione, pero hipotéticamente esto podría funcionar:

SELECT DISTINCT c.*
FROM corpuses c JOIN searches s 
  ON (MATCH(c.title, c.body) AGAINST (s.term));

De acuerdo, lo probé usando las definiciones de su tabla y algunos datos de muestra del manual de MySQL. Aquí hay una consulta que funciona (probada con MySQL 5.1.30):

SELECT *
FROM corpuses 
WHERE MATCH(title, body)
  AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches) 
    IN BOOLEAN MODE);