sql >> Databasteknik >  >> RDS >> Mysql

Hur man:matchar (sök utrymme) mot (ansluter med kolumn från annan tabell)

Det låter som att du behöver använda ett FULLTEXT-matchande uttryck i ditt join-villkor.

Jag har aldrig använt en fulltextmatchning i anslutningsvillkor, så jag är inte säker på att detta kommer att fungera, men hypotetiskt kan detta göra det:

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

Okej, jag har provat det med dina tabelldefinitioner och några exempeldata från MySQL-manualen. Här är en fråga som fungerar (testad med MySQL 5.1.30):

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



  1. Hur får jag min, median och max från min fråga i postgresql?

  2. Skillnaden mellan läs commited och repeterbar läsning

  3. Rails-utveckling - Kan inte ansluta till MySQL-server på 'localhost' (10061)

  4. Hur ansluter jag en mysql-databasfil till en lokal ruby ​​on rails-applikation