Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在不使用聚合函数的情况下选择不在GROUPBY子句中的列_Sql_Oracle - Fatal编程技术网

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

Sql 如何在不使用聚合函数的情况下选择不在GROUPBY子句中的列,sql,oracle,Sql,Oracle,我正在查询Oracle数据库(简化查询。有更多条件): 这是一个非常大的数据库,MAX正在消耗查询加载时间。 我不需要最大值。字段包含文本值。它可以是任何值,因为它们对于给定的字段1都应该是相同的。它可以是第一个、最后一个,也可以是更快的。您可能想从结果集中删除“重复项”。请检查: WITH cte AS ( SELECT DISTINCT field1 FROM table1 WHERE field3 = 'something1' ) SELECT field1, sub.fiel

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

这是一个非常大的数据库,MAX正在消耗查询加载时间。
我不需要最大值。字段包含文本值。它可以是任何值,因为它们对于给定的字段1都应该是相同的。它可以是第一个、最后一个,也可以是更快的。您可能想从结果集中删除“重复项”。请检查:

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;

字段3和字段1上的索引可能会加快速度。

为什么你认为问题出在
max()
上,而不是
group by
?Gordon从我口中说出了这句话-group by很可能是瓶颈。您可以对此进行测试:从表1中选择DISTINCT field1,其中field3='something1',然后查看这是否比您发布的查询花费更少的时间。如果没有,您将知道分组是问题所在,而不是最大值。因为没有最大值和使用group by查询是一种删除坏数据(重复数据)的方法,而不是我的数据库。只能查询它。无法更改数据库结构
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;