繁体   English   中英

在选择列表中,DESCRIPTION'无效,因为它不包含在聚合函数或GROUP BY子句中。

[英]DESCRIPTION' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause [duplicate]

可能重复:
该列在选择列表中无效,因为该列未包含在聚合函数或GROUP BY子句中

我是SQL查询的新手; 我收到此错误:

“ DESCRIPTION'在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中”

我找不到正确的聚合函数。 我的选择语句中需要像unique(DESCRIPTION)这样的东西

我的描述列是唯一的varchar值,知道吗?

INSERT INTO myTable2 (ID,INDEX,STATUS,DESCRIPTION,TS)
SELECT ID,min(INDEX),STATUS,DESCRIPTION,min(TS) from myTable2 t1top
WHERE (EXISTS(
        SELECT * FROM myTable1 WHERE ID=t1top.ID AND STATUS='Completed' )) 
GROUP BY ID, STATUS
ORDER BY ID  DESC, STATUS DESC

您可以使用SELECT DISTINCT描述 或类似这样的东西:

INSERT INTO myTable2 (ID,INDEX,STATUS,DESCRIPTION,TS)
SELECT ID, min(INDEX), STATUS, DESCRIPTION, min(TS) 
    FROM myTable2 t1top
WHERE (EXISTS(
        SELECT * FROM myTable1 WHERE ID=t1top.ID AND STATUS='Completed' )) 
GROUP BY ID, STATUS, DESCRIPTION
ORDER BY ID  DESC, STATUS DESC

要记住的关键点是,您在聚合查询中选择的每个字段都必须在诸如SUMMAX等的聚合函数中, 包含在group-by子句中。 这与MySql不同,后者不对查询强制执行该规则,而只是返回不可预测的结果。

将DESCRIPTION添加到您的GROUP BY列表中,它应该可以工作

INSERT INTO myTable2 (ID,INDEX,STATUS,DESCRIPTION,TS)
SELECT ID,min(INDEX),STATUS,DESCRIPTION,min(TS) from myTable2 t1top
WHERE (EXISTS(
    SELECT * FROM myTable1 WHERE ID=t1top.ID AND STATUS='Completed' )) 
GROUP BY ID, STATUS, DESCRIPTION
ORDER BY ID  DESC, STATUS DESC

但这并不意味着您的查询是正确的-取决于您要实现的目标

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM