数据库操作求助

ncscharles 2013-09-10 01:19:37
软件在某个时间点会向数据库中加入N条数据(N可变),并将这个时间点写进数据库中的Time字段,也就是说这N条数据的Time字段的值是一样的。
现在想取出最近M个时间点加进去的所有数据,求操作方法和SQL语句。
...全文
114 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncscharles 2013-09-10
  • 打赏
  • 举报
回复
引用 11 楼 DBA_Huangzj 的回复:
[quote=引用 10 楼 ncscharles 的回复:] [quote=引用 9 楼 DBA_Huangzj 的回复:] 记得改表名,因为我不知道你的表是什么名字
谢谢指教。 还有下面这样的语句是不是也可以,有没有什么问题? Select * From Table Where MeasureTime in (select DISTINCT top 10 MeasureTime from MeasureResult order by MeasureTime desc) 这是取最近10时间点的所有数据[/quote]好像真的可以哦,貌似我复杂化了[/quote] 主要是复杂的看不太明白,谢谢指教啦~
發糞塗牆 2013-09-10
  • 打赏
  • 举报
回复
引用 10 楼 ncscharles 的回复:
[quote=引用 9 楼 DBA_Huangzj 的回复:] 记得改表名,因为我不知道你的表是什么名字
谢谢指教。 还有下面这样的语句是不是也可以,有没有什么问题? Select * From Table Where MeasureTime in (select DISTINCT top 10 MeasureTime from MeasureResult order by MeasureTime desc) 这是取最近10时间点的所有数据[/quote]好像真的可以哦,貌似我复杂化了
ncscharles 2013-09-10
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
记得改表名,因为我不知道你的表是什么名字
谢谢指教。 还有下面这样的语句是不是也可以,有没有什么问题? Select * From Table Where MeasureTime in (select DISTINCT top 10 MeasureTime from MeasureResult order by MeasureTime desc) 这是取最近10时间点的所有数据
發糞塗牆 2013-09-10
  • 打赏
  • 举报
回复
记得改表名,因为我不知道你的表是什么名字
發糞塗牆 2013-09-10
  • 打赏
  • 举报
回复
修改变量@n就可以获取最近n个时间点的数据
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-09-10 13:44:26
-- Version:
--      Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64) 
--	Jun 10 2013 20:09:10 
--	Copyright (c) Microsoft Corporation
--	Enterprise Evaluation Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([MeasureTime] datetime,[Symbol] int,[Result] int,[Conference] int)
insert [huang]
select '2013-2-19 13:53:15',1,673,384 union all
select '2013-2-19 13:53:15',2,670,376 union all
select '2013-2-19 13:53:15',3,625,551 union all
select '2013-2-19 13:53:15',4,0,0 union all
select '2013-2-19 13:53:15',5,510,420 union all
select '2013-2-19 13:53:15',6,496,405 union all
select '2013-2-19 13:53:15',7,536,410 union all
select '2013-2-19 13:53:15',8,520,340 union all
select '2013-2-19 13:53:15',9,284,150 union all
select '2013-2-19 15:30:32',1,383,282 union all
select '2013-2-19 15:30:32',2,210,150 union all
select '2013-2-19 15:30:32',3,272,147 union all
select '2013-2-19 15:30:32',4,250,152 union all
select '2013-2-19 15:30:32',5,261,163 union all
select '2013-2-19 15:30:32',6,568,408 union all
select '2013-2-19 15:30:32',7,568,408 union all
select '2013-2-19 16:03:01',1,611,407 union all
select '2013-2-19 16:03:01',2,629,388 union all
select '2013-2-19 16:03:01',3,606,401 union all
select '2013-2-19 16:03:01',4,641,411 union all
select '2013-2-19 16:03:01',5,638,409 union all
select '2013-2-19 16:03:01',6,693,411 union all
select '2013-2-19 17:13:15',1,432,288 union all
select '2013-2-19 17:13:15',2,0,0 union all
select '2013-2-19 17:13:15',3,481,395 union all
select '2013-2-19 17:13:15',4,419,319
--------------开始查询--------------------------
DECLARE @n INT 
SET @n=2
;WITH cte AS (
SELECT TOP (@n) *
FROM (
select DISTINCT MeasureTime,DATEDIFF(ss,MeasureTime,GETDATE())Diff
from [huang])a
ORDER BY Diff )
SELECT *
FROM dbo.huang a
WHERE EXISTS (
SELECT 1 FROM cte b WHERE a.measureTime=b.measureTime)

----------------结果----------------------------
/* 
MeasureTime             Symbol      Result      Conference
----------------------- ----------- ----------- -----------
2013-02-19 16:03:01.000 1           611         407
2013-02-19 16:03:01.000 2           629         388
2013-02-19 16:03:01.000 3           606         401
2013-02-19 16:03:01.000 4           641         411
2013-02-19 16:03:01.000 5           638         409
2013-02-19 16:03:01.000 6           693         411
2013-02-19 17:13:15.000 1           432         288
2013-02-19 17:13:15.000 2           0           0
2013-02-19 17:13:15.000 3           481         395
2013-02-19 17:13:15.000 4           419         319

*/
ncscharles 2013-09-10
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
弄点数据来看看,有点难想象,以文本贴出就可以了
MeasureTime Symbol Result Conference 2013-2-19 13:53:15 1 673 384 2013-2-19 13:53:15 2 670 376 2013-2-19 13:53:15 3 625 551 2013-2-19 13:53:15 4 0 0 2013-2-19 13:53:15 5 510 420 2013-2-19 13:53:15 6 496 405 2013-2-19 13:53:15 7 536 410 2013-2-19 13:53:15 8 520 340 2013-2-19 13:53:15 9 284 150 2013-2-19 15:30:32 1 383 282 2013-2-19 15:30:32 2 210 150 2013-2-19 15:30:32 3 272 147 2013-2-19 15:30:32 4 250 152 2013-2-19 15:30:32 5 261 163 2013-2-19 15:30:32 6 568 408 2013-2-19 15:30:32 7 568 408 2013-2-19 16:03:01 1 611 407 2013-2-19 16:03:01 2 629 388 2013-2-19 16:03:01 3 606 401 2013-2-19 16:03:01 4 641 411 2013-2-19 16:03:01 5 638 409 2013-2-19 16:03:01 6 693 411 2013-2-19 17:13:15 1 432 288 2013-2-19 17:13:15 2 0 0 2013-2-19 17:13:15 3 481 395 2013-2-19 17:13:15 4 419 319 比如这是所有的数据,一共是4个时间点加进去的。想取的是离现在最近的2个时间点入库的所有数据
發糞塗牆 2013-09-10
  • 打赏
  • 举报
回复
弄点数据来看看,有点难想象,以文本贴出就可以了
ncscharles 2013-09-10
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
你这个时间字段是什么格式?yyyy-mm-dd hh:mm:ss.xxx?
yyyy-mm-dd hh:mm:ss 数据库中是时间日期格式的
ncscharles 2013-09-10
  • 打赏
  • 举报
回复
引用 2 楼 ncscharles 的回复:
[quote=引用 1 楼 DBA_Huangzj 的回复:] select * from tb where time in (时间点1,时间点2....)还是说什么意思?
比如说: 01:00加入了10条数据; 02:00加入了9条数据; 03:00加入了13条数据; ... 24:00加入了8条数据; 现在想取最近N个时间点的加入的所有数据,比如最近10个小时加入数据的集合,每条数据都有一个时间字段来记录入库的时间。[/quote] “最近10个小时”应该是“最近10个时间点加入的所有数据”
發糞塗牆 2013-09-10
  • 打赏
  • 举报
回复
你这个时间字段是什么格式?yyyy-mm-dd hh:mm:ss.xxx?
ncscharles 2013-09-10
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
select * from tb where time in (时间点1,时间点2....)还是说什么意思?
比如说: 01:00加入了10条数据; 02:00加入了9条数据; 03:00加入了13条数据; ... 24:00加入了8条数据; 现在想取最近N个时间点的加入的所有数据,比如最近10个小时加入数据的集合,每条数据都有一个时间字段来记录入库的时间。
發糞塗牆 2013-09-10
  • 打赏
  • 举报
回复
select * from tb where time in (时间点1,时间点2....)还是说什么意思?

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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