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

Bedste måde at trække lignende elementer fra en MySQL-database

Til myisam-tabeller kan du bruge Natural Language Full-Text-søgning:http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

SELECT * FROM article a
LEFT JOIN articletag at ON (at.articleid = a.articleid)
LEFT JOIN tag t ON (at.tagid = t.tagid)
WHERE MATCH (a.title) AGAINST ('some title' IN NATURAL LANGUAGE MODE)
OR MATCH (t.tagtext) AGAINST ('some tag' IN NATURAL LANGUAGE MODE)
GROUP BY a.articleid # if you don't want get duplicates 

Du kan også overveje at tilføje redundante oplysninger om tags i ét felt (f.eks. <taga><tagb><tagz> ) i artikeltabellen og opdatere den hver gang tag tilføjes/fjernes. Dette vil forenkle forespørgslen, og det burde være hurtigere:

SELECT * FROM article a
WHERE MATCH (a.title, a.tagtext) AGAINST ('some title or tag' IN NATURAL LANGUAGE MODE)



  1. Hvordan opretter man forbindelse til MS SQL Server ved hjælp af Inno Setup?

  2. transaktionsisolationsniveau god forklaring

  3. Kan IN-operatøren bruge LIKE-wildcards (%) i Oracle?

  4. GeoDjango dwithin fejl ved brug af django.contrib.gis.measure.D