
[英]invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
[英]DESCRIPTION' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause [duplicate]
我是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
要记住的关键点是,您在聚合查询中选择的每个字段都必须在诸如SUM , MAX等的聚合函数中, 或包含在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.