Неправильно работает запрос на MySQL 5.6 и выше

237
12 февраля 2018, 01:56

Данный запрос почему-то возвращает "Empty set" на mysql 5.6 и выше. На mysql 5.5 запрос прекрасно работает и выдает список из одного столбца product_id. Помогите переделать, пожалуйста. Или что в этом запросе не так? Что изменилось в 5.6? Тип таблиц: MyISAM

SELECT `product_id` 
FROM `characteristic_value_product` 
WHERE `characteristic_value_id` IN ('22') 
GROUP BY `product_id` 
HAVING COUNT(1) IN (SELECT COUNT(1) 
                    FROM (SELECT distinct characteristic_id 
                          FROM characteristic_values 
                          WHERE id IN ('22')
                         ) char_val
                   );
Answer 1

И так, отвечу сам на свой вопрос. Все гораздо проще, чем я думал. Уже рабочий запрос имеет данный вид:

SELECT product_id 
FROM characteristic_value_product 
WHERE characteristic_value_id IN ('22') 
GROUP BY product_id 
HAVING COUNT(1) = 1 IN (SELECT COUNT(DISTINCT characteristic_id) 
                          FROM characteristic_values 
                          WHERE id IN ('22')
                   );

Дело исключительно в HAVING COUNT(1) = 1. Алиасы, как подсказали в комментариях для ответа убрал, чтобы было минимум отличий

READ ALSO
Не знаю как правильно построить SQL-запрос

Не знаю как правильно построить SQL-запрос

Доброго времени суток! Прошу помочь, делаю себе проект, бэкенд на nodejs + sqliteВ проекте есть чат, без каналов, просто 1 на 1

206
Получить общий баланс пользователя

Получить общий баланс пользователя

Так я получаю общую сумму пользователя с ID 1, но мне нужно вывести пользователя у которого самый большой баланс

167
как лучше справиться с Out of memory exception

как лучше справиться с Out of memory exception

Приветствую всехДелаю небольшую програмку, которая работает с данными (читает файлы и создает свои), пишу на C#

242