DISTINCT の罠
mysql> SELECT members.id FROM members LEFT OUTER JOIN comments ON comments.member_id = members.id -> WHERE (members.id IN (2,9,10,11)) ORDER BY comments.id DESC; +----+ | id | +----+ | 9 | | 10 | | 9 | | 11 | | 9 | | 11 | | 11 | | 11 | | 10 | | 9 | | 2 | | 2 | | 2 | | 2 | | 2 | +----+ mysql> SELECT DISTINCT members.id FROM members LEFT OUTER JOIN comments ON comments.member_id = members.id -> WHERE (members.id IN (2,9,10,11)) ORDER BY comments.id DESC; +----+ | id | +----+ | 11 | | 10 | | 9 | | 2 | +----+
DISTINCT によるソートはORDER BYより優先されるみたい?
でもDESC だけ有効になっている辺りが非常に気になる。
Limited Eager Loading の際に発行されるSQL なので
あまり手を出したくないところなのだけど。
何か回避策は無いかな・・・。