0
給定表USER(名稱,城市,年齡),獲取每個城市最舊用戶的用戶詳細信息的最佳方式是什麼?用於獲取與聚合匹配的行(不是組)的SQL(獲取行數)
我已經看到了甲骨文使用下面的例子SQL,我認爲它的工作原理
select name, city, age
from USER, (select city as maxCity, max(age) as maxAge
from USER
group by city)
where city=maxCity and age=maxAge
因此,在本質:使用嵌套查詢來爲它選擇的分組鍵和聚合,然後用它作爲另一個表在主要查詢中並使用分組鍵和每個鍵的聚合值進行連接。
這是SQL的標準方式嗎?它是否比使用臨時表更快,或者實際上是使用臨時表呢?
對,這也適用於oracle(除了在子查詢錯字中丟失「名稱」),所以我猜row_number()和分區是標準的SQL? (我的意思是,我將能夠在sybase和MySQL中使用它們) 另外我想確認在FROM子句中使用子查詢是否標準和便攜 在我的情況下,我希望獲得所有匹配的行,所以我會堅持我的選擇,但這也是一個很好的選擇。 – user265454 2010-05-19 11:50:33
@xulochavez:FROM子句中的子查詢非常便於攜帶。排名功能不是,我認爲它們僅限於SQL Server,Oracle和PostgreSQL。絕對不是MySQL – Andomar 2010-05-19 12:55:50