MySQL 5.7 - агрегатные разрывы функций, ссылающиеся на псевдоним столбца в подзапросе - PullRequest
0 голосов
/ 22 мая 2018

Я обновил MySQL 5.5 до 5.7, и у меня есть запрос, который больше не работает.Он довольно большой, но я сократил его до этого - сам запрос на самом деле не имеет смысла, но демонстрирует:

SELECT
id AS id2,
name,
SUM(id * (SELECT 10 FROM event WHERE event.product_id=id2 LIMIT 1))
FROM product
GROUP BY product.category_id

Это работает в 5.5, но не в 5.7 (я получаю [Err] 1054 - Неизвестный столбец 'id2' в 'предложении where' ).Это работает, если я не псевдоним столбца:

SELECT
id,
name,
SUM(id * (SELECT 10 FROM event WHERE event.product_id=product.id LIMIT 1))
FROM product
GROUP BY product.category_id

Но в реальном запросе это довольно сложное выражение, поэтому я хочу его псевдоним.Это также работает в 5.7, если я исключаю агрегатную функцию:

SELECT
id,
name,
id * (SELECT 10 FROM event WHERE event.product_id=product.id LIMIT 1)
FROM product
GROUP BY product.category_id

Я не могу найти ничего в документах, объясняющих это несоответствие.Я могу переписать запрос, но он будет намного более запутанным, поэтому я пытаюсь найти способ, если я смогу снова включить это поведение (обратите внимание, что SQL_MODE одинаков для разных версий).

...