TSQL Distinct,以及OrderBy和WHERE

时间:2011-10-25 20:30:08

标签: sql sql-server sql-server-2005 tsql

我有以下SQL语句示例:

SELECT DISTINCT [CommentNdx]
      ,[CommentsText]
      ,[DateTimeAdded]
  FROM [dbo].[CommentTable]
ORDER BY [dbo].[CommentTable].DateTimeStart DESC
WHERE [CommentsText] = 'Hello World'

我一直收到错误Incorrect syntax near the keyword 'WHERE'.我知道语法不正确但我不确定应该如何格式化。任何帮助表示赞赏。

更新:

我的错误,我的意思是日期时间开始应该是datetimeadded。修正了语法。

SELECT DISTINCT [TestCommentNdx]
      ,[TestID]
      ,[CommentsText]
      ,[DateTimeAdded]
      ,[OperatorNdx]
  FROM [PTDB].[dbo].[TestsComments]
WHERE [TestID] = 1174411854
ORDER BY [PTDB].[dbo].[TestsComments].[DateTimeAdded] DESC

更新2:

非常感谢大家,最后一件事,如果select语句中有连接会有什么不同吗?我有一个很长的查询连接,当我尝试使用DISTINCT时,我得到ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

2 个答案:

答案 0 :(得分:10)

WHERE需要在ORDER BY之前。此外,除非它包含在SELECT语句中,否则您将无法按DateTimeStart排序。

答案 1 :(得分:2)

SELECT DISTINCT [CommentNdx] 
      ,[CommentsText] 
      ,[DateTimeAdded] 
  FROM [dbo].[CommentTable]  
WHERE [CommentsText] = 'Hello World' 
ORDER BY [dbo].[CommentTable].DateTimeStart DESC -- you can't do this

ORDER BY遵循WHERE子句。

编辑:根据@LukeGirvin的帖子,您不能按照SELECT子句中未包含的列进行排序。