SQL:“列'tbl.Column'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”

SQL:“列'tbl.Column'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”,sql,sql-server,node.js,Sql,Sql Server,Node.js,我想知道为什么会出现以下错误:列“tbl.Column”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中,MAXtblOther.columnOtherId作为tbl上的tbl内部连接tblOther的otherID。columnId=tblOther.columnOtherId内部连接tblOtherAgain-tblOther.columnOtherId=tblOtherAgain.columnAgainOtherId,其中tblOther.columnOthe

我想知道为什么会出现以下错误:列“tbl.Column”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中,MAXtblOther.columnOtherId作为tbl上的tbl内部连接tblOther的otherID。columnId=tblOther.columnOtherId内部连接tblOtherAgain-tblOther.columnOtherId=tblOtherAgain.columnAgainOtherId,其中tblOther.columnOtherAgainId=@id

当我删除tblOther.columnOtherId上的聚合函数MAX时,我没有收到上述错误。那么,如何使上面所示的语句在不出现所示错误的情况下工作呢


DBLibrary:Tedious.js

您使用了聚合函数MAX,并且SELECT子句中有一个未聚合的字段,这就是您需要GROUP BY子句的原因


既然@JW首先得到了答案,那么即使你的答案也是正确的,也将是他的答案被选为正确的。
SELECT  tbl.column, 
        MAX(tblOther.columnOtherId) AS otherID 
FROM    (tbl INNER JOIN tblOther 
            ON tbl.columnId = tblOther.columnOtherId) 
        INNER JOIN tblOtherAgain 
            ON tblOther.columnOtherId = tblOtherAgain.SourceId 
WHERE   tblOther.columnOtherAgainId = @id
GROUP   BY tbl.column
SELECT tbl.column, MAX(tblOther.columnOtherId) AS otherID FROM (tbl INNER JOIN tblOther ON tbl.columnId = tblOther.columnOtherId) INNER JOIN tblOtherAgain ON tblOther.columnOtherId = tblOtherAgain.columnAgainOtherId WHERE tblOther.columnOtherAgainId = @id
GROUP BY tbl.column