使用SQL,如何计算查询结果的数量?

时间:2016-01-01 17:29:54

标签: sql vb.net ms-access oledb

我对SQL和编码很新。

我有一个可以正常运行的SQL查询。我现在要做的就是返回该查询结果中的行数。

当前的SQL查询是:

SELECT 
    Progress.UserID, Questions.[Question Location],
    Questions.[Correct Answer], Questions.[False Answer 1],
    Questions.[False Answer 2], Questions.[False Answer 3]
FROM
    Questions 
INNER JOIN
    Progress ON Questions.[QuestionID] = Progress.[QuestionID]
 WHERE 
    (((Progress.UserID) = 1) AND 
     ((Progress.Status) <> "Correct")
    );

我知道我需要使用

SELECT COUNT(*)

...虽然不太确定如何将其集成到查询中。

然后我打算使用OLEDB将结果返回到VB Windows窗体应用程序。

非常感谢所有帮助。

谢谢!乔

3 个答案:

答案 0 :(得分:1)

要计算所有记录,请使用简单的子查询;子查询必须有别名(这里我将你的子查询命名为'子查询')。

SELECT COUNT(*) 
FROM (
    SELECT Progress.UserID, Questions.[Question Location],Questions.[Correct Answer], Questions.[False Answer 1],
    Questions.[False Answer 2], Questions.[False Answer 3]
    FROM Questions 
    INNER JOIN Progress ON Questions.[QuestionID] = Progress.[QuestionID]
    WHERE (((Progress.UserID)=1) AND ((Progress.Status)<>"Correct"))
) AS subquery;

答案 1 :(得分:0)

一种简单的方法是使用子查询:

select count(*)
from (<your query here>) as q;

在您的情况下,您还可以将select更改为:

select count(*)

但这对聚合查询无效。

答案 2 :(得分:0)

与基于SQL的方法完全不同的方法是在行返回应用程序后对行进行计数 - 您说您正在使用VB,因此您可能正在使用数据集来保存查询结果。如果是这样,那么你只需要这段代码:

dim rowcount as integer = mydataset.mytable.rows.count