У меня есть таблица T с некоторым столбцом и значениями
T
========================
id | name | g1 | g2
=========================
10 | abc | 1 | 1
14 | abc | 1 | 0
33 | abc | 1 | 0
42 | def | 1 | 0
52 | def | 1 | 1
63 | def | 2 | 0
66 | def | 2 | 0
67 | def | 2 | 0
74 | def | 1 | 0
и я хочу выделить всю строку округа с помощью предложения group *
мой запрос
select *
from T
group by name
having max(g2) = 0
мой ожидаемый результат будет
========================
id | name | g1 | g2
=========================
14 | abc | 1 | 0
33 | abc | 1 | 0
42 | def | 1 | 0
63 | def | 2 | 0
66 | def | 2 | 0
67 | def | 2 | 0
74 | def | 1 | 0
** я добавил max (g2), потому что мне нужно сделать предложение add where повторяет каждую группу. : D спасибо за ответы. Мне нужны агрегаты, чтобы ограничить возврат (имея пункт). другая работа вокруг имеет подзапрос
мой MySQL возвращает только первый ряд каждой группы
========================
id | name | g1 | g2
=========================
14 | abc | 1 | 0
42 | def | 1 | 0
игнорирование всех различий в другом столбце (id и g1).
как я помню, используя другие СУБД (oracle и MsSQL или MySQL), я могу ожидать, что мой запрос выдаст ожидаемый результат выше. возвращая все разные строки.
или есть какие-либо настройки mySQL, которые нужно изменить ??
я уже пробовал SET sql_mode=ONLY_FULL_GROUP_BY
, но он просто показывает уведомление, чтобы указать столбец, в моем понимании не указание имени столбца в предложении group by означает показать все строки с другим значением столбца.
или, нужно ли указывать какие-либо настройки sql_mode ?? или хотя бы почему MySQL возвращает только первый ряд группы ???
set @@global.sql_mode= 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER'
set @@sql_mode=''
заранее благодарю за любые ответы ...