选择所有行中总计数的最佳方法

时间:2017-10-11 20:25:57

标签: sql sql-server sql-server-2008

我想在SQL Server中找到总行数。 以下查询在所有行中返回1。 我可以使用子查询来计算RowCounts列吗?这会影响性能吗?

SELECT *, COUNT(*) AS RowCounts FROM Questions Where GroupID = @GroupID 
GROUP BY QuestionID, QuestionTitle, Option1, Option2, Option3, Option4, Answer, GroupID, Explanation, SubjectID

2 个答案:

答案 0 :(得分:2)

你需要一个窗口功能

  SELECT *, COUNT(*) OVER (ORDER BY QuestionID ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS RowCounts 
  FROM Questions

答案 1 :(得分:0)

如果您只想要总计数,可以使用此窗口功能:

SELECT q.*, COUNT(*) OVER () AS RowCounts
FROM Questions q
WHERE GroupID = @GroupID ;

窗口函数通常比单独的JOINGROUP BY更优化。

如果你想枚举输出行,我建议ROW_NUMBER()

SELECT q.*, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS seqnum
FROM Questions q
WHERE GroupID = @GroupID ;
相关问题