3

我是 SQL 新手。我需要在几个不同的站点上运行一次查询才能获得计数。查询需要根据 where 子句向我提供所有记录的计数。但我无法弄清楚语法。

这是我尝试过的:

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

这给了我一个疯狂的数字。

基本上,IDXKEYID 是一个主键,并且存在于 KEYS 和 KEYFLAGS 表中。我想要统计数据库中满足上述 WHERE 子句标准的所有 IDXKEYID 记录。我只想要 1 列/行中的 1 个简单结果。

COUNT
-----
12346

提前致谢!

4

1 回答 1

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)
于 2012-09-19T21:03:16.733 回答