【问题标题】:SQL error on join and group by加入和分组时的 SQL 错误
【发布时间】:2023-04-06 22:15:01
【问题描述】:

闲置的 SQL 语句有什么问题?我收到下面描述的错误。我正在使用 Microsoft SQL Server 2012。

SQL 语句:

SELECT 
    ContentRequests.Title,ContentRequests.ChapterOrArticleTitle,
    ContentRequests.Institution_Id,
    Institutions.Name
FROM 
    [HexDatabaseDev].[dbo].[ContentRequests]
LEFT JOIN
    Institutions ON Institutions.Id = ContentRequests.Institution_Id
GROUP BY 
    ContentRequests.Title

我得到的错误:

列“HexDatabaseDev.dbo.ContentRequests.ChapterOrArticleTitle”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

【问题讨论】:

  • 错误很明显。如果你使用GROUP BY,那么SELECT中的每一列不是在聚合函数中的,都需要在GROUP BY
  • 如果您不进行任何聚合(SUMMIN 等),为什么还要进行 GROUP BY。如果您想要一个独特的组合列表,只需使用SELECT DISTINCT Content....

标签: sql-server


【解决方案1】:

分组规则..

在select子句中,可以只忽略涉及聚合或常量的列,select中的其余列应该在Group By中

所以在你的情况下。

group by
ContentRequests.ChapterOrArticleTitle,ContentRequests.ChapterOrArticleTitle
,ContentRequests.Institution_Id
, Institutions.Name

【讨论】:

  • 为了帮助解释,如果您按ContentRequests.Title 分组,但随后要求在结果集中查看Institutions.Name,那么每个ContentRequests.Title“可能”有多个Institutions.Name 结果,即打破你的要求 - 首先按ContentRequests.Title分组
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
相关资源
最近更新 更多