错误:选择列表中的无效表达式(未包含在聚合函数或 GROUP BY 子句中) [英] Error: Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)

查看:46
本文介绍了错误:选择列表中的无效表达式(未包含在聚合函数或 GROUP BY 子句中)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Firebird SQL.下面提到的查询返回 4 行,如图所示.

I am using Firebird SQL. The below mentioned query returns 4 rows as shown in the figure.

    SELECT a.EPS_ID,b.C_NAME,c.AY_YR_NAME,d.S_NAME,e.E_NAME
FROM 
    TBLEXAMPLANNER_S_MSB a, 
    TBLCLASS_MSB b, 
    TBLACADEMICYEAR_MSB c, 
    TBLSUBJECTS_MSB d, 
    TBLEXAMTYPE_MSB e
WHERE 
    a.EPS_CLASS_ID=b.C_ID 
AND a.EPS_SESSION_ID=c.AY_ID 
AND a.EPS_SUB_ID=d.S_ID 
AND a.EPS_PE_ID=e.E_ID

我希望它只返回 1(one) 行

I want it to return only 1(one) row like

EPS_ID     C_NAME    AY_YR_NAME   S_NAME   E_NAME
---------------------------------------------------
7          5         2016-2017    English  FA1 

我正在使用以下查询,但它不起作用.

I am using the following query but it does not work.

SELECT a.EPS_ID,MAX(b.C_NAME) AS XT,c.AY_YR_NAME,d.S_NAME,e.E_NAME
FROM 
    TBLEXAMPLANNER_S_MSB a, 
    TBLCLASS_MSB b, 
    TBLACADEMICYEAR_MSB c, 
    TBLSUBJECTS_MSB d, 
    TBLEXAMTYPE_MSB e
WHERE 
    a.EPS_CLASS_ID=b.C_ID 
AND a.EPS_SESSION_ID=c.AY_ID 
AND a.EPS_SUB_ID=d.S_ID 
AND a.EPS_PE_ID=e.E_ID
GROUP BY a.EPS_ID,d.S_NAME

错误信息是:

选择列表中的无效表达式(不包含在聚合函数或 GROUP BY 子句)

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)

推荐答案

GROUP BY 的使用让引擎为你分组记录.要进行分组,您必须为 每一 列的 RDBMS 提供建议,它应该做什么.

The usage of GROUP BY makes the engine group the records for you. To do grouping, you have to give advice to the RDBMS for each column, what it should do.

  • 分组吗?-> 将列添加到 GROUP BY-Clause
  • 不是群吗?-> 好的,还有什么?
    • 忽略该列?从您的选择子句中删除它
    • 求和?-> 使用 SUM(mycol)
    • 其他聚合函数可以在文档

    此外:在您的情况下,您尝试按 EPS_ID 分组,这在每一行中都是唯一的.因此,按该列分组 将返回所有行,因为没有任何可分组依据.要将记录分组,它们必须具有相同值.

    Additionally: In your case you try to group by EPS_ID, which is unique in each row. So a grouping by that column will return all rows, because there is nothing to group by. To group records, they have to have the same value.

    这篇关于错误:选择列表中的无效表达式(未包含在聚合函数或 GROUP BY 子句中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆