Имеется таблица `id`, `val`. Оба поля integer. `id` - unsigned primary auto_increment, `val` - unsigned В таблице имеется N записей. Задаётся число M Необходимо выбрать из таблицы максимальное количество записей таким образом, чтобы количество значний `val` не превосходило M. (в Запросе №1 говорилось о сумме, здесь уже идёт речь конкретно о значениях, словно у вас имеется таблица юзеров и разных стран, и вым нужно выбрать юзеров из M стран (не важно каких, известно только количество). Делать по id IN() не советуйте, число M может быть и > 1000 и писать всё в IN() - плохо)
Чо то не догнал. Если говорить про юзеров из M стран, то: [sql]select name from users as u join (select distinct country from users limit 0, M) -- можно order by RAND() заюзать для случайных стран as c on c.country=u.country[/sql]
В этом случае IN(список id-шек) сработает быстрее JOIN'а. Но передавать 1000 id-шек в IN() не мудрено