Sql server SQL筛选出与所有条件匹配的行
我有一个表,在这里我必须做一个select语句。 该表包含1616372个值,我需要确保其中5177个值不会显示在基于某些过滤器的select语句中 我做了一个select语句,它返回我需要过滤掉的所有值:Sql server SQL筛选出与所有条件匹配的行,sql-server,select,filter,where-clause,Sql Server,Select,Filter,Where Clause,我有一个表,在这里我必须做一个select语句。 该表包含1616372个值,我需要确保其中5177个值不会显示在基于某些过滤器的select语句中 我做了一个select语句,它返回我需要过滤掉的所有值: SELECT [EntryNo] ,[AccountNo] ,[CompanyNo] ,[Description] ,[Date] ,[Code] FROM dbo.Table WHERE CAST([Date] AS Time) = '23:59:59.0000000'
SELECT
[EntryNo]
,[AccountNo]
,[CompanyNo]
,[Description]
,[Date]
,[Code]
FROM dbo.Table
WHERE CAST([Date] AS Time) = '23:59:59.0000000'
AND [Code] <> 'x'
AND YEAR([Date]) = 2020
选择
[入口编号]
,[AccountNo]
,[CompanyNo]
,[说明]
,[日期]
,[代码]
从dbo.Table
何处强制转换([日期]作为时间)='23:59:59.0000000'
和[代码]'x'
年份([日期])=2020年
这给了我5177行我需要过滤掉
但是,当我从xxx创建一个SELECT*并添加您在这里看到的内容的相反WHERE子句时,它会过滤掉与任何条件匹配的行,而不是所有条件
SELECT * FROM dbo.Table
WHERE CAST([Date] AS Time) <> '23:59:59.0000000'
AND [Code] <> 'x'
AND YEAR([Date]) <> 2020
从dbo.表中选择*
在哪里播放([日期]作为时间)'23:59:59.0000000'
和[代码]'x'
和2020年([日期])
我试着在标准周围加上各种括号,但我无法使它工作,因此它只能过滤掉5177行
这些行没有任何特定的ID,因为它们位于暂存表中,而使它们与众不同的是[EntryNo]和[CompanyNo]的组合
我希望您能提供帮助。您在第二次查询中没有正确地否定条件,
和
应该变成或(根据)
或者,您可以将所有内容封装在一个否定中,让SQL来完成工作,而不是手动执行:
哪里没有(
强制转换([日期]作为时间)='23:59:59.0000000'
和[代码]'x'
年份([日期])=2020年
)
非(a、b和c)=(非a、非b或非c)