2016-01-01 167 views
0

我对SQL和编码一般都很陌生。使用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窗体应用程序。

非常感谢所有帮助。

谢谢!乔

+0

'(Progress.Status)<> “正确的”'应该是'(Progress.Status)<>“Correct'' –

+0

呀,刚刚意识到,无论是它在vis studio中感到困惑。谢谢! –

回答

0

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

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

在你的情况,你也可以改变select是:

select count(*) 

但不会对聚集查询工作。

+0

您好,感谢您的回复。 “as q”是什么意思?谢谢 –

+0

不用担心,因为它的作品!非常感谢,真的会帮助我完成计算机课程。 –

+0

SELECT Count(*)AS Expr1 FROM(SELECT Progress.UserID,Questions。[Question Location],Questions。[Correct Answer],Questions。[False Answer 1],Questions。[False Answer 2],Questions。[False ((Progress.UserID)= 1)AND((Progress.Status)<>“Correct”)))AS q; –

1

要计算所有记录,请使用简单的子查询;子查询必须有别名(这里我已经命名了子查询的子查询)。从基于SQL的人

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; 
+0

这很好,虽然我会将COUNT(*)更改为COUNT(1)。 –

+1

@劳伦斯约翰逊绝对没关系http://stackoverflow.com/questions/1221559/count-vs-count1 –

+0

这就是我听DBA得到的结果。感谢您的链接。 –

0

完全不同的方法是,一旦他们回到您的应用程序来计算的行 - 你说你正在使用VB,所以你可以很好地使用数据集来保存您的查询结果。如果是这样,那么你只需要这段代码:

dim rowcount as integer = mydataset.mytable.rows.count 
相关问题