如何在不使用聚合函数的情况下选择不在group by子句中的列

时间:2017-10-04 16:20:12

标签: sql oracle

我正在查询Oracle数据库(简化查询。有更多条件):

SELECT        field1, MAX(field2) AS something
FROM          table1
WHERE        (field3 = 'something1')
GROUP BY field1

这是一个非常大的数据库,MAX正在查杀查询加载时间。 我不需要MAX值。字段包含文本值。它可以是任何值,因为对于给定的field1它们都应该是相同的。它可以是第一个,也就是最后一个,更快。

1 个答案:

答案 0 :(得分:0)

可能你想删除"重复"从您的结果集。请检查:

WITH cte AS (
  SELECT DISTINCT field1
  FROM table1
  WHERE field3 = 'something1'
)
SELECT field1, sub.field2
FROM cte c
OUTER APPLY (SELECT field2
             FROM table1 t
             WHERE rownum = 1
               AND t.field1 = c.field1) sub;

field3和field1上的索引可以加快速度。