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

複雑なMySQLクエリが誤った結果を出している

    select * from (
        select a.idArticle, a.content, max(`order`) max_order
        from words_learned wl
        join words w on w.idwords = wl.idwords
        join article a on a.idArticle = w.idArticle
        where wl.userId = 4
        group by a.idArticle
    ) a
    left join (
        select count(*) unknown_count, w2.idArticle from words w2
        left join words_learned wl2 on wl2.idwords = w2.idwords
        and wl2.userId =  4
        where wl2.idwords is null
        group by w2.idArticle
    ) unknown_counts on unknown_counts.idArticle = a.idArticle
    where unknown_count is null or unknown_count < 10
    order by max_order desc
    limit 100
    

    http://sqlfiddle.com/#!2/6944b/9

    最初の派生テーブルは、特定のユーザーが1つ以上の単語を知っている一意の記事と、最大のorderを選択します。 それらの言葉の価値。最大順序値は、上位の単語を含む記事が最初に表示されるように最終結果を並べ替えるために使用されます。

    2番目の派生テーブルは、特定のユーザーが各記事について知らない単語の数をカウントします。このテーブルは、ユーザーが知らない単語が10個以上含まれている記事を除外するために使用されます。




    1. JDBCエラー:08S01が時々発生する

    2. Hibernate-1に対して2つの列を結合する方法はありますか?

    3. データベースから最も人気のある場所を選択するアルゴリズム

    4. MySQLの複数の左結合