Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najlepszy sposób na pobranie podobnych elementów z bazy danych MySQL

W przypadku tabel myisam można użyć wyszukiwania pełnotekstowego w języku naturalnym: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 

Możesz też pomyśleć o dodaniu zbędnych informacji o tagach do jednego pola (np. <taga><tagb><tagz> ) w tabeli artykułów i aktualizować ją za każdym razem, gdy tag zostanie dodany/usunięty. Uprości to zapytanie i powinno być szybsze:

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. Wielowątkowość w MySQL?

  2. Nieoczekiwane przekroczenie limitu pamięci PHP za pomocą pojedynczego zapytania PDO?

  3. Kopia zapasowa bazy danych SQL Query

  4. Dlaczego skrypt zwraca błąd z tym kodem w php?

  5. SQL INSERT...SELECT z automatyczną inkrementacją DATETIME