| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 394 人关注过本帖
标题:请教下各位大大:UPDATE SQL 语句比较日期时间大小时提示关联字段时出错
取消只看楼主 加入收藏
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:8 
请教下各位大大:UPDATE SQL 语句比较日期时间大小时提示关联字段时出错

程序代码:
CREATE CURSOR 成绩_d (名次 I,完成时间 V(20))
INSERT INTO 成绩_d (完成时间) VALUES ("2019-05-18T00:00:04")
INSERT INTO 成绩_d (完成时间) VALUES ("2019-05-18T00:00:01")
INSERT INTO 成绩_d (完成时间) VALUES ("2019-05-18T00:00:03")
INSERT INTO 成绩_d (完成时间) VALUES ("2019-05-18T00:00:06")
INSERT INTO 成绩_d (完成时间) VALUES ("2019-05-18T00:00:04")
INSERT INTO 成绩_d (完成时间) VALUES ("")

Update 成绩_d Set 名次=1+(Select Count(TmpCursor.完成时间) From 成绩_d As TmpCursor With (Buffering=.T.) Where Ctot(TmpCursor.完成时间) < Ctot(成绩_d.完成时间) And !Empty(TmpCursor.完成时间) ) Where !Empty(完成时间)


要求:比较"完成时间"的大小,"完成时间"相同,名次相同。
请各位大大指教~
搜索更多相关主题的帖子: INSERT VALUES INTO 成绩 时间 
2022-08-06 11:20
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用吹水佬在2022-8-6 11:34:24的发言:

1+(Select Count(TmpCursor.完成时间) From 成绩_d As TmpCursor With (Buffering=.T.) Where Ctot(TmpCursor.完成时间) < Ctot(成绩_d.完成时间) And !Empty(TmpCursor.完成时间) )
这句是表达什么?


吹版,结果需要显示成这样:
名次    完成时间
1    2019-05-18T00:00:01
2    2019-05-18T00:00:03
3    2019-05-18T00:00:04
3    2019-05-18T00:00:04
5    2019-05-18T00:00:06
2022-08-06 14:30
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用吹水佬在2022-8-6 15:18:41的发言:

按“完成时间”排一下再依次计“名次”,这个没那么复杂吧


有更简单的方法么...
2022-08-06 15:21
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
UPDATE SQL 语句比较日期时间大小时提示关联字段时出错

估计是子查询过多运算引致,现增加了一字段,将字段"完成时间"处理为金额数值,问题解决,可以显示同数值同名次,并占位。

Update 成绩_d Set 名次=1+(Select Count(TmpCursor.完成时间) From 成绩_d As TmpCursor With (Buffering=.T.) Where TmpCursor.日期时间值 > 成绩_d.日期时间值 And !Empty(TmpCursor.完成时间) ) Where !Empty(完成时间)
2022-08-06 16:09
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用吹水佬在2022-8-6 15:46:57的发言:


“排队点名”还不够简单,想要多简单的?

名次    完成时间
1    2019-05-18T00:00:01
2    2019-05-18T00:00:03
3    2019-05-18T00:00:04
3    2019-05-18T00:00:04
5    2019-05-18T00:00:06

吹版,同分同名次,并占位,注意看名次,里面没有4
2022-08-06 16:10
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用sdta在2022-8-6 17:29:12的发言:


个人理解方法简单,在于数据处理速度的快慢


对的对的
2022-08-06 18:06
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用sdta在2022-8-6 17:23:58的发言:

是不是这样的效果

是的,要这效果
2022-08-06 18:06
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用吹水佬在2022-8-6 18:25:44的发言:


生成按时间排队的表,从上到下扫描一次,相对上一条记录,不同时间的名次为记录号,同时间的名次不变,是这意思吧,还不够简单明了。
你那个每条记录都 set .. = .. select ....... ,数据记录多时效率可能相对会慢。


这样么,我好像过于迷信SQL语句的效率了......
2022-08-06 20:33
shonken
Rank: 2
等 级:论坛游民
帖 子:67
专家分:12
注 册:2017-1-15
收藏
得分:0 
以下是引用吹水佬在2022-8-6 20:41:45的发言:


SELECT - SQL 命令通常是比较高效
但 SELECT 意味着要遍历表记录,如果一条语句出现多个 SELECT 就未必是好事,尤其是在处理每条记录时都要 SELECT


好的,了解了,谢谢~
2022-08-06 21:15
快速回复:请教下各位大大:UPDATE SQL 语句比较日期时间大小时提示关联字段时出 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028887 second(s), 9 queries.
Copyright©2004-2022, BCCN.NET, All Rights Reserved