Как вы говорите, вы хотите r_id
и o_id
в качестве двух выходных столбцов ...:
SELECT r_id, o_id
FROM t1 AS a
WHERE r_id in (3, 5)
AND count =
(SELECT MAX(count)
FROM t1 AS b
WHERE b.r_id = a.r_id
)
Если существует более одного o_id
с одинаковым «максимальным количеством» для определенного r_id
, это вернет их все (вместо того, чтобы выбрать один из них произвольно).
В MySQL 5.1 с таблицей примеров:
mysql> select * from t1;
+------+------+------+-------+
| id | r_id | o_id | count |
+------+------+------+-------+
| 1 | 2 | 100 | 1 |
| 2 | 3 | 100 | 1 |
| 3 | 5 | 100 | 1 |
| 4 | 2 | 101 | 2 |
| 5 | 3 | 101 | 2 |
| 6 | 4 | 101 | 2 |
+------+------+------+-------+
6 rows in set (0.00 sec)
этот запрос дает мне именно ваш запрошенный результат:
+------+------+
| r_id | o_id |
+------+------+
| 5 | 100 |
| 3 | 101 |
+------+------+
2 rows in set (0.31 sec)
Кстати, моя точная версия:
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.1.34 |
+-----------+
1 row in set (0.00 sec)