我想在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
答案 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 ;
窗口函数通常比单独的JOIN
和GROUP BY
更优化。
如果你想枚举输出行,我建议ROW_NUMBER()
:
SELECT q.*, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS seqnum
FROM Questions q
WHERE GroupID = @GroupID ;