使用 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
我对 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