在不使用临时表的情况下从SELECT隐藏按列排序

时间:2014-12-04 01:36:02

标签: sql select sql-order-by distinct

嗯,我知道我们可以使用临时表从select语句中按列隐藏顺序。只是想知道如何不使用临时表

由于我工作的数据库非常庞大,因此添加临时表会大大影响查询性能。

我的查询如下:

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

现在我想要的是在不使用临时表的情况下从输出中删除Col4。使用内部查询甚至无法做到这一点。感谢。

2 个答案:

答案 0 :(得分:0)

通常,排序列不需要包含在选择列表中。这是一个常见的操作 - 不需要显式临时表。

select color
from fruit
order by weight

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

答案 1 :(得分:0)

如果您的 Col4 是经过计算/派生的并且必须是原始选择,则可以简单地进行outer查询:

SELECT G.Col1, G.C2, G.C3 from
(SELECT DISTINCT
  Col1,
  MAX(Col2) AS C2,
  MAX(Col3) AS C3,
  Col4
FROM 
  Table1
Group By
  Col4,
  Col1
Order By
  Col4) AS G