[英]Unable to sort and query, SQL database Table
我正在嘗試了解 mysql 的動態,但我無法理解此錯誤語句:
詢問:-
SELECT employee_id, First_name, Salary AS Pay FROM employee
ORDER BY Salary DESC
WHERE Salary > 70000
LIMIT 3;
我想從employee
表中檢索數據,然后對其進行排序,並且只取出greater than 7000
。 但是我得到了這個錯誤,
ER_PARSE_ERROR:您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,了解在第 1 行的“WHERE Salary > 70000 LIMIT 3”附近使用的正確語法
但是,如果代碼是這樣寫的,
SELECT employee_id, First_name, Salary AS Pay FROM employee
WHERE Salary > 70000
ORDER BY Salary DESC
LIMIT 3;
它運行,完美。 但是查詢具有完全不同的含義。
我希望你能理解我的意思,為什么我們不能在對表進行排序后進行查詢?
SQL 是一種描述性語言,而不是一種過程語言。
SQL 查詢描述了結果集。 無論是刪除salary > 7000
行然后排序,還是排序然后刪除它們,您實際上都會得到相同的答案。
您無需指定操作順序; 這就是 SQL 編譯器和優化器的工作。
您可以在選擇之前通過子選擇技巧進行排序,即:
SELECT * FROM (SELECT employee_id, First_name, Salary AS Pay FROM employee
ORDER BY Salary DESC) a
WHERE Pay > 70000
LIMIT 3;
Mysql 將首先創建一個包含有序內容的臨時內存表,然后你的 where 將和限制一樣應用於該表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.