SQL计数查询,使用来自2个不同表的where子句

时间:2012-09-19 21:01:17

标签: sql count

我是SQL新手。我需要在几个不同的站点运行一次性查询才能获得计数。查询需要根据where子句给出所有记录的计数。但是我在弄清楚语法方面遇到了麻烦。

这是我试过的:

SELECT COUNT(KEYS.IDXKEYID) FROM KEYS, KEYFLAGS 
WHERE IDXLEVELID = 1 
AND KEYFLAGS.BKEYSEVERMADE = -1

这给了我一个疯狂的号码。

基本上,IDXKEYID是主键,存在于KEYS和KEYFLAGS表中。我想要数据库中符合上述WHERE子句critera的所有IDXKEYID记录的计数。我只想在1列/行中得到1个简单的结果。

COUNT
-----
12346

提前致谢!

1 个答案:

答案 0 :(得分:2)

SELECT COUNT(DISTINCT KEYS.IDXKEYID) -- count each key only once
  FROM KEYS, KEYFLAGS 
 WHERE KEYS.IDXLEVELID = 1 
   AND KEYFLAGS.BKEYSEVERMADE = -1
   AND KEYS.IDXKEYID = KEYFLAGS.IDXKEYID -- you're missing this link

或者您可以使用EXISTS

编写它
SELECT COUNT(1) -- count each key only once
  FROM KEYS
 WHERE KEYS.IDXLEVELID = 1 
   AND EXISTS (
       SELECT *
         FROM KEYFLAGS
        WHERE KEYS.IDXKEYID = KEYFLAGS.IDXKEYID -- correlate
          AND KEYFLAGS.BKEYSEVERMADE = -1)