我是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
提前致谢!
答案 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)