2012-04-20 4 views
0

私は1118レコードのテーブルを持っています。これらのレコードには、デフォルトでNULLである1つのフィールドflagがあります。これらのレコードのうち556はフィールドflagがtrueとマークされ、残りはNULLです。私は次のクエリを実行すると :簡単なクエリのカウントを得るのが難しい

select count(*) from table_name where flag!='true' 

を私は0として結果を取得する場合は、実際の結果として、私が間違っているのは何1118から556すなわち562

すべきですか?

+0

使用TINYINT 1と0、ヌルの場合は0、真の場合は1です。 – Prix

答えて

2

NULLは、あなたが離れてtruefalse?)などのNULL

から別の値を持っている場合、それが依存していなくても、他のNULL

select count(*) from table_name where flag!='true' OR flag IS NULL 

または

select count(*) from table_name where flag IS NULL 

、何と比較することはありません

select 
    count(CASE WHEN flag = 'true' THEN flag END) AS truecount, 
    count(CASE WHEN flag = 'false' THEN flag END) AS falsecount 
    count(*) - count(flag) AS NULLCount 
from 
    table_name 

最後に、これらを参照してCOUNTとnull/NOを理解してくださいトンのnullは、明示的な言及しない限り、任意の論理式で一致したことはありませんクエリNULLで

+0

チャームのように働いた。あなたの助けに感謝します。心から感謝する :) – Deepak

0

値:だけでなくブールケースフィールドを定義する

SELECT COUNT(*) FROM TABLE_NAME WHERE flag IS NULL 
関連する問題