3

私はSQLが初めてです。カウントを取得するには、いくつかの異なるサイトで 1 回限りのクエリを実行する必要があります。クエリでは、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 に答える