У меня есть таблица, в которой несколько записей сгруппированы по одному и тому же номеру. Каждая из этих строк также имеет результат.
Пример
id 4 | Group 5 | Result 1
id 5 | Group 5 | Result 1
id 6 | Group 6 | Result 0
id 7 | Group 6 | Result 1
Как мне выбрать группу с наибольшим числом, когда все их результаты будут одинаковыми?
Другими словами, скажем, я хочу получить самую высокую группу, в которой result = 1; Мне не нужна группа 6, поскольку результат равен 0, и я не хочу, чтобы какие-либо группы старше группы 4, поскольку все группы 5 имеют результат 1.






Есть несколько способов сделать это. Вот один из подходов для выбора самого высокого group с использованием order by и limit, где все результаты - 1 с использованием max и min:
select grp
from yourtable
group by grp
having max(result) = 1 and min(result) = 1
order by grp desc
limit 1
Это сработало. Я добавил: «выберите * из таблицы, где результат = (<Ваша строка sql>)» --- и получил желаемый результат.
Это несколько иной подход.
SELECT `group` FROM `test`
GROUP BY `group`
HAVING COUNT(`result`)=SUM(`result`) AND SUM(`result`)>0
ORDER BY `group` DESC LIMIT 1;
Проверить это на SQL Fiddle
Какая у вас база данных?