sql >> データベース >  >> RDS >> Mysql

一致するタグの数で一致するタグを持つアイテムを並べ替える

    次のようなものを試してください:

    select article_id, count(tag_id) as common_tag_count
    from articles_tags 
    group by tag_id
    where tag_id in (
        select tag_id from articles_tags where article_id = 2
    ) and article_id != 2
    order by common_tag_count desc;
    

    MySQLの構文を少し調整する必要があるかもしれません。

    または実際に機能するこれ:;-)

    SELECT at1.article_id, Count(at1.tag_id) AS common_tag_count
    FROM articles_tags AS at1 INNER JOIN articles_tags AS at2 ON at1.tag_id = at2.tag_id
    WHERE at2.article_id = 2
    GROUP BY at1.article_id
    HAVING at1.article_id != 2
    ORDER BY Count(at1.tag_id) DESC;
    


    1. PostgreSQLで文字列値(evalなど)内でクエリを実行する方法はありますか?

    2. SQLで数値を含む文字列列を並べ替えますか?

    3. PostgreSQLが大文字のテーブル名を好まないのはなぜですか?

    4. com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:キー'PRIMARY'の重複エントリ''