1

可能重复:
选择列表中的列无效,因为它不包含在聚合函数或 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
4

2 回答 2

0

您可以使用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 不同,MySql 不对查询强制执行该规则,而只是返回不可预测的结果。

于 2012-06-02T20:06:03.397 回答
0

将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

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

于 2012-06-02T20:24:10.497 回答