У меня есть простой запрос, который имеет неоднозначность относительно col
:
SELECT SUBSTR(col, 1, 4) AS col,
COUNT(*) AS nc
FROM (SELECT 'test1' AS col
UNION ALL
SELECT 'test2' AS col)
GROUP BY col
Согласно документации , средство проверки запросов должно выдавать ошибку:
Неоднозначность между именем столбца предложения FROM и псевдонимом списка SELECT в GROUP BY:
SELECT UPPER(LastName) AS LastName
FROM Singers
GROUP BY LastName;
Приведенный выше запрос неоднозначен и приведет к ошибке, поскольку LastName в предложении GROUP BY может ссылаться на исходный столбец LastName в Singers, или он может ссылаться на псевдоним AS LastName, значение которого равно UPPER (LastName).
Но запрос выполняется успешно и выдает следующий результат:
╔═══╦═══════╦══════╗
║ ║ col ║ nc ║
╠═══╬═══════╬══════╣
║ 1 ║ test ║ 2 ║
╚═══╩═══════╩══════╝
Из результатов видно, что предложение GROUP BY распознает col
как псевдоним внешнего выбора (целое выражение SUBSTR
).
Итак, вот мой вопрос, достаточно ли надежное поведение? Могу ли я написать свои запросы с учетом этого и соответственно адаптировать свои запросы?