sql >> Databáze >  >> RDS >> Mysql

Nejlepší způsob, jak stáhnout podobné položky z databáze MySQL

Pro tabulky myisam můžete použít fulltextové vyhledávání v přirozeném jazyce: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 

Můžete také uvažovat o přidání nadbytečných informací o značkách do jednoho pole (např. <taga><tagb><tagz> ) v tabulce článků a aktualizujte ji při každém přidání/odstranění značky. Tím se zjednoduší dotaz a měl by být rychlejší:

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



  1. Alternativy MySQL Workbench - Správa konfigurace ClusterControl

  2. Oracle - extrahovat časové razítko z řetězce varchar?

  3. Laravel 4:Jak aplikovat podmínku WHERE na všechny dotazy třídy Eloquent?

  4. Zdá se, že objednávka mysql pomocí unie nefunguje