Mysql 中,為什么 WHERE 使用別名會報錯,而 ORDER BY 不會報錯?
我們先對salary * 12 命名一個別名annual_sal
SELECT employee_id,salary,salary * 12 annual_sal FROM employees ORDER BY annual_sal;
這段代碼以annual_sal升序輸出且正常執行沒有報錯,說明order by 可以使用別名
我們再看看這個段代碼
SELECT employee_id,salary,salary * 12 annual_sal FROM employees WHERE annual_sal > 81600 ORDER BY annual_sal;
這段代碼就報錯了,報錯說明是Unknown column 'annual_sal' in 'where clause',由此可以得出where陳述句執行是找不到annual_sal.
要解決這個問題,我們必須知道sql陳述句執行順序,
- 先執行from陳述句用哪個表
- where過濾條件(這時候不知道別名)
- select選擇輸出欄位 (這時候才有別名)
- order by進行排序 (order by 才能使用別名)
總結一下:因為where在sql中執行順序在select(創建別名)之前,所以找不到別名,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/550232.html
標籤:其他
上一篇:day01-Redis入門
