-3
select E.eid from Employee E
where E.salary = (
select max (E2.salary) from Employee E2
where E2.salary ≠ (
select max (E3.salary) from Employee E3);
如何處理上述查詢? 這個查詢返回什麼? 子查詢處理的順序是什麼?sql中的複雜查詢
不關心syntax.Just希望與報表功能明確。在aggegate函數的情況下,是否首先獲取記錄,然後計算聚合? –
我認爲描述它的最簡單的方法是:它嘗試評估第一部分(e.salary = X),但必須計算內部(X),然後嘗試計算第二部分(E2.salary < > Y),然後必須計算內部(Y),所以它計算(Y)中最遠的,然後可以評估下一個級別(X),然後最終可以返回最外面。就第一次抓取而言,然後聚合(假設默認鎖定),它會抓取,但不會讓任何人在完成其他所有操作時更改值。它不預取,只是將每個查詢都視爲一個完整的操作。 –