Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gewusst wie:Übereinstimmung (Suchraum) mit (Verknüpfung mit Spalte aus anderer Tabelle)

Klingt so, als müssten Sie in Ihrer Join-Bedingung einen FULLTEXT-Übereinstimmungsausdruck verwenden.

Ich habe noch nie eine Volltextübereinstimmung in einer Join-Bedingung verwendet, daher bin ich mir nicht sicher, ob dies funktionieren wird, aber hypothetisch könnte dies funktionieren:

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

Okay, ich habe es mit Ihren Tabellendefinitionen und einigen Beispieldaten aus dem MySQL-Handbuch versucht. Hier ist eine Abfrage, die funktioniert (getestet mit MySQL 5.1.30):

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