SQL - выбор всех или ни одного в наборе строк

У меня есть таблица, в которой несколько записей сгруппированы по одному и тому же номеру. Каждая из этих строк также имеет результат.

Пример

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.

Какая у вас база данных?

D-Shih 08.08.2018 21:06
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
171
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Есть несколько способов сделать это. Вот один из подходов для выбора самого высокого 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>)» --- и получил желаемый результат.

Erudaki 08.08.2018 21:23

Это несколько иной подход.

SELECT `group` FROM `test` 
GROUP BY `group`
HAVING COUNT(`result`)=SUM(`result`) AND SUM(`result`)>0
ORDER BY `group` DESC LIMIT 1;

Проверить это на SQL Fiddle

Другие вопросы по теме