@accountnujen

Как достать все поля, но где один столбец уникальный?

Есть запрос, который возвращает
623a340da6134745440085.png
Мне нужно достать все столбцы, но только уникальных записей (id 2,3,5,10,11,12). Достать только уникальные столбцы можно через Distinct, но он возвращает не все столбцы, а мне нужны все.
Также в сети говорят, что можно использовать SELECT * WHERE ..... GROUP BY type, но у меня вылетает ошибка:
#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'roomtest.rooms.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.

В сети советуют убрать в sql_mode only_full_group_by, но проблема в том, что в моей mysql 8 и так нет only_full_group_by...

Подскажите, каким образом можно достать все столбцы уникальных записей?

Запрос выглядит вот таким образом:
SELECT * FROM rooms WHERE id NOT IN (SELECT room_id FROM `bron` WHERE
'2022-03-04 13:00:00' <= end AND '2022-03-04 13:00:00' >= start OR
'2022-03-06 11:00:00' <= end AND '2022-03-06 11:00:00' >= start)
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
accountnujen, не знаю что у вас там не срабатывало, такая конструкция вполне рабочая и очевидная...
SELECT * FROM rooms 
WHERE id NOT IN (
   SELECT room_id 
   FROM `bron` 
   WHERE '2022-03-04 13:00:00' <= end 
   AND '2022-03-04 13:00:00' >= start 
  OR '2022-03-06 11:00:00' <= end 
  AND '2022-03-06 11:00:00' >= start
)
GROUP BY `type`
ORDER BY `id`
Ответ написан
@galaxy
В сети советуют убрать в sql_mode only_full_group_by, но проблема в том, что в моей mysql 8 и так нет only_full_group_by
правда что ли? А select @@sql_mode; что выводит?

В общем, можно либо выключать only_full_group_by:
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

либо переписать запрос так:
SELECT ANY_VALUE(id), type, ANY_VALUE(price) FROM rooms WHERE id NOT IN ( ... ) GROUP BY type
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы