真正简单的SQL不是按表达式分组-Oracle

真正简单的SQL不是按表达式分组-Oracle,sql,oracle,group-by,Sql,Oracle,Group By,我试着从其他一些帖子中读到关于分组表达式错误的信息,但是所有的帖子都提到了诸如MAX、MIN等分组函数。我没有使用任何一个函数,这是一个返回此类错误的非常简单的查询 SELECT * FROM ad_voarnet_atendimento_pista WHERE is_closed = 0 GROUP BY prefixo ORDER BY prefixo 我做错了什么 编辑: 预期结果与MySQL通过此查询提供给我的结果相同。它将排除列PREFIXO的每个重复值。我只需要

我试着从其他一些帖子中读到关于分组表达式错误的信息,但是所有的帖子都提到了诸如MAX、MIN等分组函数。我没有使用任何一个函数,这是一个返回此类错误的非常简单的查询

SELECT * 
FROM   ad_voarnet_atendimento_pista 
WHERE  is_closed = 0 
GROUP  BY prefixo 
ORDER  BY prefixo 
我做错了什么

编辑:

预期结果与MySQL通过此查询提供给我的结果相同。它将排除列PREFIXO的每个重复值。我只需要上述列中每个值的1条记录。 错误消息如下:

[Err] ORA-00979: not a GROUP BY expression

在聚合函数(如
MIN()MAX()SUM()COUNT()
)的上下文之外,
groupby
没有任何用处,除了可能用于消除重复数据行。把它拿走。如果希望消除重复数据,请改用
DISTINCT
。如果使用
DISTINCT
,则除非您对
SELECT
列表中的列(主键列除外)有更具体的说明,否则它没有多大价值

SELECT
  DISTINCT * 
FROM 
  AD_VOARNET_ATENDIMENTO_PISTA 
WHERE IS_CLOSED = 0
ORDER BY PREFIXO

分组依据
有时与排序依据混淆。您已经有了一个
ORDER BY PREFIX0

在聚合函数(如
MIN()MAX()SUM()COUNT()
)的上下文之外,
GROUP BY
没有任何用处,除了可能用于消除重复行之外。把它拿走。如果希望消除重复数据,请改用
DISTINCT
。如果使用
DISTINCT
,则除非您对
SELECT
列表中的列(主键列除外)有更具体的说明,否则它没有多大价值

SELECT
  DISTINCT * 
FROM 
  AD_VOARNET_ATENDIMENTO_PISTA 
WHERE IS_CLOSED = 0
ORDER BY PREFIXO

分组依据
有时与排序依据混淆。您已经有一个前缀为的订单,

您得到的确切错误消息是什么?您想做什么?预期的输出是什么?我正在尝试通过这个SQL获得MySQL将提供给我的东西。它将排除列PREFIXO的每个可重复值。您得到的确切错误消息是什么?您试图做什么?预期的输出是什么?我正在尝试通过这个SQL获得MySQL将提供给我的东西。它将排除列PREFIXO的每个可重复值。
DISTINCT*
非常无用,因为它将包括主键列,因此根据定义,结果中永远不会有重复项。DISTINCT子句是否会使所有重复的行都被排除?我想要的是MySQL提供的同一个GROUP BY:如果一个结果已经有这样的值,它将被忽略,但只针对我提到的字段。@MarcoAurélioDeleu MySQL有一个非常不同的默认行为
GROUP BY
,这在其他RDBMS中是不存在的。MySQL允许您在
SELECT
中包含列,这些列在
groupby
中不存在,有时结果不确定,但在其他RDBMS中不可能。您的输入数据是什么?您想要什么结果?@a_horse_,带有_no_name Yes-假设没有主键,或更具体的
选择
列表。OP显然是在寻找MySQL的怪异行为。@MarcoAurélioDeleu Learning
Groupby
首先在MySQL中聚合通常意味着需要重新了解它们在其他RDBMS中的实际工作方式,不幸的是,
DISTINCT*
是非常无用的,因为它将包含主键列,因此根据定义,结果中永远不会有重复项。DISTINCT子句是否会使所有重复的行都被排除在外?我想要的是MySQL提供的同一个GROUP BY:如果一个结果已经有这样的值,它将被忽略,但只针对我提到的字段。@MarcoAurélioDeleu MySQL有一个非常不同的默认行为
GROUP BY
,这在其他RDBMS中是不存在的。MySQL允许您在
SELECT
中包含列,这些列在
groupby
中不存在,有时结果不确定,但在其他RDBMS中不可能。您的输入数据是什么?您想要什么结果?@a_horse_,带有_no_name Yes-假设没有主键,或更具体的
选择
列表。OP显然是在寻找MySQL的怪异行为。@MarcoAurélioDeleu Learning
Groupby
首先在MySQL中聚合通常意味着需要重新了解它们在其他RDBMS中的实际工作方式,不幸的是。