2011-11-30 19 views
0

かなり簡単な質問:なぜ次のSQLの出力がnullではないのですか?MySQLクエリ結果の説明

SELECT * FROM table WHERE 
(`FirstName` LIKE 'D%' OR `LastName` LIKE 'D%' OR `City` LIKE 'D%') 
AND 
(`FirstName` NOT LIKE 'D%' OR `LastName` NOT LIKE 'D%' OR `City` NOT LIKE 'D%') 

私はMySQL 5.1を使用しています。その結果、「そうでない」部分はすべて無視されます。

+0

お返事ありがとうございます。誰かが私に 'NOT LIKE'の部分を 'FULLTEXT'検索に変更する方法を教えてもらえますか? – thelastray

答えて

2

2番目の括弧の条件が真であり、あなたのクエリは、その結果を返します。

あなたはおそらくやっていることを意味することは、このようなものです:

SELECT * FROM table WHERE 
(`FirstName` LIKE 'D%' OR `LastName` LIKE 'D%' OR `City` LIKE 'D%') 
AND 
(`FirstName` NOT LIKE 'D%' AND `LastName` NOT LIKE 'D%' AND `City` NOT LIKE 'D%') 

(。AND sに変更されましたOR S注)

0

変更したりして、または第一の条件は、条件の残りの部分はあなたがそこに行を一致しているので、チェックされませんtrueの場合

(`FirstName` NOT LIKE 'D%' AND `LastName` NOT LIKE 'D%' AND `City` NOT LIKE 'D%') 

が好きではありませんと。あなたは 『「最初の括弧の条件が真である。あなたがLastName持っている場合は、』スミスのデビッドのFirstNameそれを持っている場合は

0

姓= Arunava
姓=デイ
市=ニューヨーク

最初の部分は、真の原因姓LIKE 'D%' は
2番目の部分は真cauesは 'Dの%' を、NOT LIKEのFirstNameある
市はできtrueで真であるものは何でも。

0

あなたの条件でOR演算子を使用しています。したがって、上記の2つの異なる条件が真である可能性がありますので、結果はnullではありません。

関連する問題