【发布时间】:2016-04-11 13:07:30
【问题描述】:
SELECT
a.Name, a.About,
COUNT(b.Id) AS TotalCities,
SUM(b.NoOfDwellers) AS TotalCityDwellers
FROM
Countries a
LEFT JOIN
Cities b ON a.Id = b.CountryId
WHERE
a.Name LIKE '%some str%'
GROUP BY
a.Id
ORDER BY
a.Name ASC
此 SQL 返回错误:
消息 8120,第 16 级,状态 1,第 1 行
列“Countries.Name”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
【问题讨论】:
-
如果你有一个
SELECT有一个GROUP BY子句,那么SELECT列表中的每个 列必须是either 一个聚合(SUM、COUNT、MAX等),或者它必须在GROUP BY子句中。您的SELECT列表中有a.Name和a.About,它们不 由聚合处理 - 因此,这两列 必须 出现在GROUP BY子句中 -
确切的错误信息是:
Countries.Name不包含在GROUP BY子句中。 -
不知道您的数据,这可能就像在
SELECT子句中将a.Name替换为MAX(a.Name)一样简单。 -
但是在mysql中是可以的。那么如何使用 sql server 2012 实现这个查询结果。@marc_s & @TT
-
@Chayan - 这是一个documented extension in MySQL 和一个不太好的(IMO)。
标签: sql sql-server select sql-server-2012 syntax-error