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')
)