Ваш оригинальный запрос - лучший способ написать такой запрос. Вы всегда должны использовать псевдонимы, которые отличаются от имен столбцов.
Ваш второй запрос не завершен, что несколько скрывает использование псевдонима, равного имени столбца. Имена псевдонимов, определенные в предложении SELECT
, нельзя использовать в предложении GROUP BY
, так как последнее происходит раньше первого. Итак, что у вас есть:
SELECT number1-number2 AS number1 FROM some_table
GROUP BY some_table.number1
пока вам нужно
SELECT number1-number2 AS number1 FROM some_table
GROUP BY some_table.number1, some_table.number2
или без квалификатора таблицы:
SELECT number1-number2 AS number1 FROM some_table
GROUP BY number1, number2
(Конечно, это все равно не имеет смысла без какой-либо агрегации, но я знаю, это всего лишь пример: -)
В любом случае, по-прежнему плохая идея повторно использовать имя столбца для псевдонима. Представьте себе ORDER BY number1
- что бы это значило; имя столбца или псевдоним? (Я почти уверен, что псевдоним здесь имеет приоритет, но я не знаю, определено ли это на самом деле стандартом SQL.)