问题描述
我正在使用 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屋!
更多推荐
[db:关键词]
发布评论