sql >> Database teknologi >  >> RDS >> Mysql

Sådan:matcher (søg mellemrum) mod (forener med kolonne fra anden tabel)

Det lyder som om du skal bruge et FULLTEXT-matchende udtryk i din join-betingelse.

Jeg har aldrig brugt en fuldtekst-match i en join-tilstand, så jeg er ikke sikker på, at dette vil virke, men hypotetisk kan dette gøre det:

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

Okay, jeg har prøvet det ved at bruge dine tabeldefinitioner og nogle eksempeldata fra MySQL-manualen. Her er en forespørgsel, der virker (testet med MySQL 5.1.30):

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



  1. Hvad er en database? Og en DBMS?

  2. Hvordan gemmer man flere muligheder i en enkelt tabel?

  3. PHP Sidste log ind script

  4. Portering af en Ruby/Rails/MRI-app til JRuby