使用NULL时与AND和OR混淆

时间:2017-07-10 09:07:39

标签: sql-server

我不是一个训练有素的SQL人员,但我通常可以编写基本查询。但这让我感到困惑。

该表的一个子集是:

fldUID (auto-increment unique)
fldSrcAddress
fldDstAddress
fldSrcDNSHost
fldDstDNSHost

我试图检索具有fldSrcAddress或fldDstAddress的记录的fldUID,并且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的记录。

显然是一个愚蠢的错误 - 任何帮助都会受到赞赏。

由于

伊恩

1 个答案:

答案 0 :(得分:2)

可以是括号问题。

试试这个:

input