2014-12-04 61 views
1

那麼,我知道我們可以通過使用臨時表從選擇語句的列隱藏命令。只是想知道如何做到這一點,而不使用臨時表從列選擇隱藏命令而不使用臨時表

由於我工作的db非常龐大,添加臨時表會影響查詢性能很多。

我的查詢是類似以下內容:

SELECT DISTINCT 
    Col1, 
    MAX(Col2), 
    MAX(Col3), 
    Col4 
FROM 
    Table1 
Group By 
    Col4, 
    Col1 
Order By 
    Col4 

現在我想的是擺脫擺脫輸出的COL4不使用臨時表。甚至不能使用內部查詢來做到這一點。謝謝。

回答

0

通常,排序列不需要包含在選擇列表中。這是一種常見的操作 - 不需要明確的臨時表。

 
select color 
from fruit 
order by weight 

http://sqlfiddle.com/#!6/ba09d/3

+0

關於更新SQL,可以在OP請給一個示例場景,這種查詢將適用。 (1)應該建議DISTINCT以可能無法預測的方式改變GROUP BY行爲。彙總數據中的小變化很容易導致結果行出現和消失。 (2)根據我的經驗,DISTINCT幾乎總是暗示一些潛在的設計/代碼缺陷。 Ymmv (3)爲什麼數據按兩列分組,但只有一列返回。爲什麼不分組「Col1」? LMK如果它將有用的數據展示這些點。 – auser8y 2014-12-10 20:13:53