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

Using SQL, how do I COUNT the number of results from a query?

我对 SQL 和编码还很陌生。

我有一个 SQL 查询可以正常工作。我现在想要做的就是 return 该查询结果的行数。

当前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 将结果 return 到 VB Windows Form App。

非常感谢所有帮助。

谢谢!乔

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

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

对于您的情况,您还可以将 select 更改为:

select count(*)

但这不适用于聚合查询。

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

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;

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

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