簡體   English   中英

無法排序查詢,SQL數據庫表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM