У меня есть таблица buildings
, которая выглядит следующим образом:
+----+------------------+-------+
| id | accommodation_id | type |
+----+------------------+-------+
| 1 | 2 | Villa |
+----+------------------+-------+
| 2 | 2 | Suite |
+----+------------------+-------+
| 3 | 5 | Villa |
+----+------------------+-------+
И для каждого жилья определить, к какому типу относится этот лог c: если в жилье больше чем 1 здание использует значение жесткого кода Accommodation
в противном случае * столбец 1008 *.
Ожидаемый результат должен выглядеть следующим образом:
+---------------+
| type |
+---------------+
| Accommodation | <- the result for accommodation_id=2
+---------------+
| Villa | <- the result for accommodation_id=5
+---------------+
Я пробовал этот запрос
SELECT IF(Count(id) = 1, type, 'accommodation') AS type
FROM `buildings`
WHERE accommodation_id = 2
GROUP BY accommodation_id
Сбой из-за использования type
, которого нет в группе (ошибка only_full_group_by ).
Если я добавлю type
к возвращаемой группе не требуется результат
+---------------+
| type |
+---------------+
| Accommodation | <- the result for accommodation_id=2 & id=1
+---------------+
| Accommodation | <- the result for accommodation_id=2 & id=2
+---------------+
| Villa | <- the result for accommodation_id=5 & id=3
+---------------+
Я использую MySQL8 с sql_mode = only_full_group_by