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(この例ではItem-B)に「類似」しているものを検索する場合、出力は次のようになります

    Item-A, 2
    Item-C, 1
    

    これはarticletagのフルスキャンです 。したがって、 many:many Mapping>

    クエリの実行後に記事に関する情報を取得する必要がある場合は、それを「派生」テーブルとして使用します。例:

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

    ORDER BYを削除できます 外側のORDER BYよりも優先して無視されるため、内側のクエリから 。)




    1. php-HTMLテーブルデータをMySQLに挿入するにはどうすればよいですか

    2. Ubuntu ORA-24960:属性OCI_ATTR_USERNAMEが最大許容長の255を超えています

    3. MariaDBでEXTRACTVALUE()がどのように機能するか

    4. データセット間の類似率を計算する効果的な方法