不能選擇列我有3個表:從數據庫
[Users]: UserId, Name...
[Topics]: TopicId, CreatorUserId...
[Comments]: CommentId, TopicId...
。
現在,我想根據這種機制選擇最熱門主題的創建者: 獲取比指定日期更新的評論。按主題的創建者對這些評論分組,然後按組中的行數排序。然而,我不確定我的查詢是否遵循這個邏輯(看起來根據結果,但我只有一些用戶和主題),但主要問題是,當我想選擇名稱用戶(Users.Name
),我得到一個錯誤:
Column '[TestDatabase].[dbo].[Users].[Name]' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
T-SQL查詢:
SELECT
Users.UserId, Users.Name, COUNT(Users.UserId) as RowCountInGroup
FROM [TestDatabase].[dbo].[Users]
INNER JOIN [TestDatabase].[dbo].[Topics] ON Topics.CreatorUserId = Users.UserId
INNER JOIN [TestDatabase].[dbo].[Comments] ON Comments.TopicId = Topics.TopicId
WHERE
Comments.CreationDate > CAST('14 SEPTEMBER 2012' as DateTime)
GROUP BY Users.UserId
ORDER BY RowCountInGroup DESC
謝謝你幫助我。
編輯:我已經複製了原始錯誤消息。我需要從用戶中選擇電子郵件,城市等欄目,所以我不確定將所有這些添加到group by
子句是最佳解決方案。
錯誤和SQL沒有出現匹配 - 你確定錯誤不是關於'Users.Name'列嗎? – Oded
你必須在Users.Name上進行分組,即使錯誤文本與你的查詢所做的不匹配,它也可以解釋你得到的錯誤。 –