Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tốt nhất để lấy các mục tương tự từ cơ sở dữ liệu MySQL

Đối với bảng myisam, bạn có thể sử dụng tìm kiếm toàn văn bản bằng ngôn ngữ tự nhiên: 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 

Bạn cũng có thể nghĩ đến việc thêm thông tin thừa về thẻ vào một trường (ví dụ:<taga><tagb><tagz> ) trong bảng bài viết và cập nhật nó mỗi khi thẻ được thêm / xóa. Điều này sẽ đơn giản hóa truy vấn và nó sẽ nhanh hơn:

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. Chỉ chọn các mục nhập được nhóm mới nhất

  2. Chỉ mục một cột có cần thiết khi có chỉ mục nhiều cột không?

  3. Tôi có thể sử dụng loại lược đồ nào để chứa các mục nhập dữ liệu dựa trên ngày tháng theo cách thủ công?

  4. Tôi có thể bị hack với mã này không?

  5. Thêm khóa ngoại không thành công trong MySQL với Mã lỗi 1005, số 150