Почему запрос возвращает все записи, если использовать IN вместо = в MySQL?
1,00
р.
р.
SELECT customer, SUM(price) FROM tab GROUP BY customer HAVING SUM(price) IN (SELECT max(sm) FROM ( SELECT sum(price) AS sm FROM tab GROUP by customer ) AS t) Почему такой запрос возвращает все записи, но если использовать = вместо IN, то все работает корректно? Так же, если отдельыно выполнить SELECT max(sm) FROM ( SELECT sum(price) AS sm FROM tab GROUP by customer ) AS t и вставить результат в первоначальный запрос, то все будет корректно.
Ответ Ответ основан на комментарии пользователя @Mike. Судя по багтрекеру MySQL: https://bugs.mysql.com/bug.php?id=34874 – это баг, обнаруженный в 2008 году. Он до сих пор не исправлен. Проблемные версии MySQL: 5.0+ В качестве решения предлагается использовать оператор = вместо IN.