Почему я получаю синтаксическую ошибку в MySQL при использовании Group By? - PullRequest
0 голосов
/ 30 марта 2020

Почему я получаю сообщение об ошибке в последней строке?

SELECT 
    *
FROM
    datawarehouse.shipments
WHERE
    ControlBranch = 'SFO'
        AND ShipmentCreateDateUTC >= '2020-03-01'

ORDER BY id DESC
GROUP BY ShipmentNumber;

То, что я пытаюсь выполнить sh, - это заказ по идентификатору Des c, группировка по ShipmentNumber и затем извлечение всех поля.

1 Ответ

0 голосов
/ 30 марта 2020

Ну, во-первых, запрос не будет работать, потому что вы что-то группируете, а затем показывает все с синтаксисом *. Вам нужно показать столбец, который вы группируете, а затем использовать агрегирующие функции с остальными (SUM, COUNT, AVG и т. Д. c), чтобы он отображал сгруппированные значения. После этого вам нужно проверить порядок инструкций, который использует SQL Сервер. Приказ проходит всегда в конце инструкции. Итак, правильный порядок вашего запроса выглядит следующим образом:

SELECT id, COUNT(*) -- The count is an example
FROM datawarehouse.shipments
WHERE
    ControlBranch = 'SFO'
    AND ShipmentCreateDateUTC >= '2020-03-01'
GROUP BY ShipmentNumber
ORDER BY id DESC;

Кроме того, даже если это не имеет значения, вы можете лучше понять, как работает механизм проверки шторки (порядок выполнения) эта ссылка: https://blog.sqlauthority.com/2009/04/06/sql-server-logical-query-processing-phases-order-of-statement-execution/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...