用sql表达删除一条时间最早的记录,如何写?

GinkgoTree 2005-03-23 11:00:09
用sql表达删除一条时间最早的记录,如何写?我的数据库是slq server ,表有一个datetime字段:如下:表名:Net_Oline
[NetID] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[UserCode] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
[SSCode] [varchar] (3) COLLATE Chinese_PRC_CI_AS NULL ,
[ComputerName] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[LocalIP] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[Operation] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[Content] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Net_Datetime] [datetime] NULL ,
[FixFlag] [bit] NOT NULL ,
[EnFlag] [bit] NOT NULL

一、delete from (select top 1 * from Net_Oline order by net_datetime) t
提示出错
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '(' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'order' 附近有语法错误。
二 、delete from
(select T1.* from Net_Oline T1 ,
(select top 1 Net_datetime from Net_Oline order by Net_datetime ) T2
where T1.Net_datetime=T2.Net_datetime) T
提示出错:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '(' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: 'T' 附近有语法错误。

???????????????????????????????????????
...全文
276 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xluzhong 2005-03-23
  • 打赏
  • 举报
回复
create table t(id int identity(1,1),d datetime)
insert into t select '2005-4-1' union all select '2005-2-1' union all select '2005-3-1' union all select '2005-1-1'
go
select * from t
go
delete t
from (select top 1 * from t order by d) as k
where t.d=k.d
go
select * from t
go
drop table t
xluzhong 2005-03-23
  • 打赏
  • 举报
回复
create table t(id int identity(1,1),d datetime)
insert into t select '2005-4-1' union all select '2005-2-1' union all select '2005-3-1' union all select '2005-1-1'
go
select * from t
go
delete t
from (select top 1 * from t order by d) as k
where t.d=k.d
go
select * from t
go
drop table t
paoluo 2005-03-23
  • 打赏
  • 举报
回复
改下

如果NetID是唯一的,可以这样
Delete From Net_Oline Where NetID=(Select top 1 NetID from Net_Oline Order By Net_Datetime)
否则
Delete From Net_Oline Where Net_Datetime=(Select top 1 Net_Datetime from Net_Oline Order By Net_Datetime)
wynbfqny 2005-03-23
  • 打赏
  • 举报
回复
delete 只能从原表中删除记录,不能从得出的查询中删除记录
这样写
delete from t1 where id in (select top 1 * from net_online order by net_datetime)
paoluo 2005-03-23
  • 打赏
  • 举报
回复

如果NetID是唯一的,可以这样
Delete From 表名 Where NetID=(Select top 1 NetID from 表名 Order By Net_Datetime)
否则
Delete From 表名 Where Net_Datetime=(Select top 1 Net_Datetime from 表名 Order By Net_Datetime)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧