2016-05-21 10 views
1

操作の順序:色情報がないnullまたは空でない場合MySQLのクエリ/私は、このタスクを把握しようとしている

一覧各馬のすべての詳細を。

表:

enter image description here

以下は動作していないよう、私も繁殖牝馬の情報を取得し続ける:

SELECT * FROM horse 
WHERE (gender='S') 
AND colour IS NOT NULL 
or NOT colour=''; 

私はカッコがgender='S'ことを意味していると考え最初に「トリガ」しますが、私は操作の順序を誤解していると思いますか?

ありがとうございました。

答えて

0

ここにいくつかの問題があります。まず、andorより高い優先度を持つため、where句は実際には((gender='S') AND colour IS NOT NULL) or (NOT colour='')と解釈されます。第2に、たとえ括弧が正しくあっても、は常に真です。colornullの場合は''と等しくなく、''の場合はnullではありません。実際には、一連のand条件が必要です。

SELECT * 
FROM horse 
WHERE gender='S' AND 
     colour IS NOT NULL AND 
     colour != ''; 
関連する問題