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

複雑なSQLクエリ、多対多

    このようなもの。

    Select people.id, people.name, count(interest.id)
    from people
    left join people_interests on people.id = people_interests.peopleid 
    left join interests on people_interests.interestid = interests.interest.id
    where interests.id in (select id from interests where interests.peopleid = @inputuserid)
    group by people.id, people.name
    order by count(interest.id)
    

    英語で(明確になる場合とされない場合があります)

    • その人の名前と共有する興味の数を選択します
    • 人のテーブルから
    • インタレストテーブルに参加して、そのテーブルを作成します
    • 私たちが一致させようとしている人の利益だけです。
    • (人によるグループ化
    • 一致する関心の数で並べ替えます。)

    サブクエリなしで更新されましたが、あまり明確ではありません

    Select people.id, people.name, count(interest.id)
    from people
    left join people_interests on people.id = people_interests.peopleid 
    left join interests on people_interests.interestid = interests.interest.id
    inner join interest i2 on (interests.id = i2.id and i2.people_id = @inputuserid)
    group by people.id, people.name
    order by count(interest.id)
    



    1. 2つのテーブルに一意の値を適用します

    2. MySQLデータベースにアクセントを保存する

    3. row_number()を使用したSQL更新

    4. 私の無効な文字はどこにありますか(ORA-00911)