我是 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

提前致谢!

最佳答案

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)

关于SQL 计数查询,使用来自 2 个不同表的 where 子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12502824/

10-14 20:06