のようなクエリを実行すると、select count(*) from myTable where (myVariable =1)
その基準に適合する数値が返されます。アスタリスクを任意の数字に置き換えても、同じ答えが得られます。ここで SQL はどうなっているでしょうか。
5 に答える
それに相当します。
テーブル内の行数を尋ねているのは、数値nがテーブル内のn番目の列を参照することです。n列がない場合でも、これは機能します。
しかし、テーブルに関連するものを何も入力する必要がない方が良い
SELECT ('X') from Table
です。
SELECT(1)の方がパフォーマンスに優れているという考え方がありますが、MSSQLは、少なくともクエリオプティマイザーが正しいプランを選択することでこれを処理します。
null以外の値のチェックをカウントするため、*、フィールド名、静的な値など、null以外の値を持つ任意の値を渡すことができます。
COUNT(*)
すべての行をカウントします。COUNT(yourColumn)
yourColumnがNULLの行は含まれません
COUNT 関数は、どの NOT NULL フィールドを COUNT 関数のパラメーターとして含めるか (つまり、括弧内) に関係なく同じ結果を返すため、COUNT 関数の構文を COUNT(1) に変更して、より適切にすることができます。データベース エンジンがデータ フィールドをフェッチする必要がないため、パフォーマンスが向上します。
ソース: SQL: COUNT 関数
あまり知られていない機能は、クエリselect count(distinct someColumn) from SomeTable
を実行して特定の列の一意の数を取得できることです。次に、どの列を選択するかは明らかに重要です。
そうでなければ、他の答えはすでにそれを説明しています。
count(expression)
の行をカウントします expression is not null
。
を試すとcount(1)
、1 が null になることはないため、すべての行が取得されます。
を試してみるとcount(column_name)
、 の行を数えますcolumn_name is not null
。
http://docs.oracle.com/cd/B10500_01/server.920/a96540/functions26a.htm#82699