Sql server SQL Server-仅筛选列等于值的记录

Sql server SQL Server-仅筛选列等于值的记录,sql-server,tsql,Sql Server,Tsql,假设我有以下(虚构的)数据集 使用我的数据集,我想删除lastupdated等于2017-01-03 我还想删除所有John的记录,其中lastupdated等于或大于2017-02-24 我尝试了以下SQL语句: SELECT * FROM Table WHERE (LastUpdated <> '2017-01-03') AND (Name <> 'John' AND LastUpdated >= '2017-02-24') 选择* 从桌子上 其中(最新更新的

假设我有以下(虚构的)数据集

使用我的数据集,我想删除
lastupdated
等于
2017-01-03

我还想删除所有
John
的记录,其中
lastupdated
等于或大于
2017-02-24

我尝试了以下SQL语句:

SELECT *
FROM Table
WHERE (LastUpdated <> '2017-01-03')
AND (Name <> 'John' AND LastUpdated >= '2017-02-24')
选择*
从桌子上
其中(最新更新的“2017-01-03”)
和(名称“John”和最新更新>='2017-02-24')
但通过这种方式,它只返回最后更新的大于2017-02-24的记录


这似乎很基本,但我无法计算出来。有什么想法吗?

您可以将其作为
而不是
条件来编写,以保持其简单性:

WHERE NOT (
    (lastupdated = 2017-01-03)
    OR
    (name = 'John' AND lastupdated >= '2017-02-24')
)

您可以这样记录您的需求:

我想删除LastUpdate等于2017-01-03的所有记录

从您的尝试来看,这是正确的:

LastUpdated <> '2017-01-03'

在TSQL中正确查询日期的方法是使用以下格式:yyyymmdd,而不是yyyy-mm-dd。
LastUpdated <> '2017-01-03'
 (
    Name <> 'John' OR
    (Name = 'John' AND LastUpdated < '2017-02-24')
 )
SELECT *
FROM [Table]
WHERE 
    LastUpdated <> '2017-01-03' AND
     (
        Name <> 'John' OR
        (Name = 'John' AND LastUpdated < '2017-02-24')
     )
 (
    Name <> 'John' OR
    Name IS NULL OR
    (Name = 'John' AND LastUpdated < '2017-02-24')
 )