Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-добрият начин да изтеглите подобни елементи от MySQL база данни

За таблици myisam можете да използвате пълнотекстово търсене на естествен език: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 

Можете също да помислите за добавяне на излишна информация за тагове в едно поле (напр. <taga><tagb><tagz> ) в таблицата със статии и го актуализирайте при всяко добавяне/премахване на маркер. Това ще опрости заявката и трябва да бъде по-бърза:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. преброяване на броя активни дни от базата данни

  2. Загубена връзка с MySQL сървър при опит за свързване с отдалечен MySQL сървър

  3. Присъединяване спрямо подзаявка

  4. Python pandas to_sql 'append'

  5. Изтриване на милиони редове в MySQL