sql >> Databasteknik >  >> RDS >> Mysql

Sök efter matchande taggar (Similarity Search) med MySQL och Constraints

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;

När du söker efter vad som är "liknar" 123 (Artikel-B i ditt exempel), bör utdata

Item-A, 2
Item-C, 1

Detta är en fullständig genomsökning av articletag . Så följ tipsen i min diskussion om many:many mapping .

Om du behöver få information om artiklarna efter att ha utfört frågan, använd den som en "deriverad" tabell; till exempel:

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

(Du kan ta bort ORDER BY från den inre frågan, eftersom den kommer att ignoreras framför den yttre ORDER BY .)




  1. Fel vid försök att migrera postgresql db till mysql med workbench

  2. byt pgsql-port

  3. Motsvarar Oracles externa tabeller i SQL Server

  4. Automatiskt utöka en Python-lista med formaterad utdata