Việc thực thi các câu lệnh MySQL thực tế là một chút khó khăn. Tuy nhiên, tiêu chuẩn không chỉ định thứ tự diễn giải của các phần tử trong truy vấn. Về cơ bản, điều này theo thứ tự mà bạn chỉ định, mặc dù tôi nghĩ rằng HAVING và GROUP BY có thể đến sau SELECT :
-
FROMmệnh đề -
WHEREmệnh đề -
SELECTmệnh đề -
GROUP BYmệnh đề -
HAVINGmệnh đề -
ORDER BYmệnh đề
Điều này rất quan trọng để hiểu cách các truy vấn được phân tích cú pháp. Bạn không thể sử dụng bí danh cột được xác định trong SELECT trong WHERE chẳng hạn như mệnh đề vì WHERE được phân tích cú pháp trước SELECT . Mặt khác, bí danh như vậy có thể nằm trong ORDER BY mệnh đề.
Đối với việc thực thi thực tế, điều đó thực sự phụ thuộc vào trình tối ưu hóa. Ví dụ:
. . .
GROUP BY a, b, c
ORDER BY NULL
và
. . .
GROUP BY a, b, c
ORDER BY a, b, c
cả hai đều có tác dụng của ORDER BY hoàn toàn không được thực thi - và do đó không được thực thi sau GROUP BY (trong trường hợp đầu tiên, tác động là xóa sắp xếp khỏi GROUP BY và thứ hai, hiệu quả là không làm gì khác hơn là GROUP BY đã làm).