我總是與SQL子查詢鬥爭。例如,答案this question:爲什麼要從子查詢中獲得結果?
select userid,
my_date,
...
from
(
select userid,
my_Date,
...
max(my_date) over (partition by userid) max_my_date
from users
)
my_date = max_my_date
爲什麼不能只是:
select userid,
my_Date,
...
max(my_date) over (partition by userid) max_my_date
from users
where
my_date = max_my_date
我知道這是不正確的,但畢竟第一隻選擇的結果,選擇的東西第二選擇,加上my_date = max_my_date
。我應該考慮使用這種子查詢(除了正常的存在等)以外的哪種情況?
你能給出想要的結果 – polin
@polin的輸出結果本身並不重要。當我看到這樣的問題時,我完全不知道該去哪裏。我想知道爲什麼需要兩個選擇。 – ericyoung
@erciyoung:原因是評估順序(SELECT查詢):'FROM - > WHERE - > SELECT'。您不能在尚未評估過的地方使用。 –