2つのテーブルがあります。1つはアイテムで、もう1つはアイテムにフラグを付けたユーザーです。次に例を示します。
items: flags:
item_id | item_name | owner_id item_id | flagged_by
------------------------------ --------------------
1 | foo | 1 1 | 2
2 | bar | 2 2 | 4
3 | baz | 2 2 | 7
2 | 7
フラグテーブルにあるすべてのアイテムに関する情報を、フラグの数順にアイテムテーブルから選択したいと思います。したがって、上記の例では、希望する出力は次のようになります。
item_id | item_name | owner_id
------------------------------
2 | bar | 2
1 | foo | 1
私が今持っているクエリはselect * from items where id in (select item_id from flags group by item_id order by count(*) desc);
内部クエリが正しく機能することはわかっていますが(すべてのIDを正しい順序で返します)、クエリ全体を実行すると、アイテムIDの順序でアイテムを取得するだけです。クエリを修正するにはどうすればよいですか?