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

Търсете съвпадащи тагове (търсене по подобие) с MySQL и ограничения

SELECT  c.articleid, COUNT(*) AS ct
    FROM articletag AS b
    JOIN articletag AS c  ON c.tagid = b.tagid
                         AND c.articleid != b.articleid
    WHERE b.articleid = 123
    GROUP BY c.articleid
    ORDER BY ct DESC;

Когато търсите това, което е „подобно“ на 123 (Елемент-B във вашия пример), резултатът трябва

Item-A, 2
Item-C, 1

Това е пълно сканиране на articletag . Така че, обърнете внимание на съветите в моята дискусия за много:много картографиране .

Ако трябва да получите информация за статиите след извършване на заявката, използвайте я като "изведена" таблица; например:

SELECT articles.*
    FROM ( the above SELECT ) AS x
    JOIN articles USING(articleid)
    ORDER BY x.ct DESC;

(Можете да премахнете ORDER BY от вътрешната заявка, тъй като тя ще бъде игнорирана с предпочитание пред външната ORDER BY .)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Наклонени черти в MySQL таблици, но с използване на PDO и параметризирани заявки. Какво става?

  2. slqlalchemy UniqueConstraint VS Index(unique=True)

  3. Вмъкване на данни от предния край към mysql db в angularjs

  4. MySql localhost срещу екземпляр на Amazon RDS

  5. Заявка за търсене с множество маркери