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