読者です 読者をやめる 読者になる 読者になる

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 なので
あまり手を出したくないところなのだけど。
何か回避策は無いかな・・・。