2
私は訓練されたSQLの人ではありませんが、通常は基本的なクエリを書くことができます。しかし、これは私を混乱させてしまった。私はfldSrcAddressまたはfldDstAddressを持っていないレコードのfldUIDを取得しようとしているNULLを使用するとANDとORと混乱する
fldUID (auto-increment unique)
fldSrcAddress
fldDstAddress
fldSrcDNSHost
fldDstDNSHost
、AND fldSrcDNSHostのいずれかがNULLであるかfldDstDNSHostがNULLである:
テーブルのサブセットです。
SELECT top 1 fldUID, fldSrcAddress, fldDstAddress
From tbl_ExtLog_FirewallTraffic
Where fldSrcAddress Is Not Null or fldDstAddress is not null
And (fldSrcDNSHost Is Null Or fldDstDNSHost is null)
order by fldUpdateTimeStamp asc
しかし、クエリがあるfldUID 32831、返します:
私のクエリがある
Example Data:
fldUID = 32831
fldSrcAddress = 192.168.1.100
fldDstAddress = 192.168.2.69
fldSrcDNSHost = Asus
fldDstDNSHost = Lucifer
フィールド2と3の両方が(だから、理にかなっている)のデータを持っています。しかし、フィールド4とフィールド5にもデータがありますが、フィールド4またはフィールド5がNULLのレコードを検索しようとしています。
明らかに愚かな間違い - どんな助けもありがたいです。
おかげ
イアン
- 今、私は愚かな感じ。私はANDの前とラインの最後に余分な括弧を入れてみましたが、最初の2つの条件の周りに置くとは思わなかった。今私はそれを見て意味をなさない!ありがとうございました。 – EyePeaSea
目の3番目のセットが時々助けてくれる:)今、そのレコードを取得していた括弧を使わない理由を特定しようとする。 –
:-)角かっこなしでは、最初の文(fldSrcAddress Is Not Null)を処理しません。fldSrcAddressがnullでない最初の行を返します。 ?質問してくれてありがとう - それは私が間違っていることを理解するのに役立ちます:-) – EyePeaSea