标题:为什么会出现不能降序排列的提示?
只看楼主
xinqing0621
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-2-16
结帖率:0
已结贴  问题点数:20 回复次数:11 
为什么会出现不能降序排列的提示?
visual foxpro9.0中执行index on 入学成绩 to x1 desc时出现错误提示“不能按降序对.idx文件进行排序”,而执行index on 入学成绩 tag x1 descending时就没有,这是为什么?tag建立的是复合索引,可以对单个字段建立复合索引?单索引和复合索引的区别到底在哪里?谢谢!!!
搜索更多相关主题的帖子: 降序 出现 提示 排列 索引 
2020-02-16 14:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
给个表文件看看
2020-02-17 06:04
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:7 
你改写成
index on -入学成绩 to x1

不过我一般用TAG索引
index on -入学成绩 tag x1
目的是不增加文件

[此贴子已经被作者于2020-2-17 09:07编辑过]

2020-02-17 09:05
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:7 
以下是引用吹水佬在2020-2-17 06:04:59的发言:

给个表文件看看

VFP的多个索引怎么做的,做到这样的效果
select * from b1 order by 字段1 desc,字段2 asc
2020-02-17 12:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
像 select * from 那样生成一个查询表,用 index on 和关联,二个字段升降/降升可以。
三个字段 select * from b1 order by 字段1 desc,字段2 asc, 字段3 desc 应该就不成

[此贴子已经被作者于2020-2-17 18:40编辑过]

2020-02-17 18:39
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
回复 5楼 吹水佬
用2个字段关联做索引的,index 做法,我还从来没有做过,还真的不会写。
以前只做单字段的。
2020-02-18 08:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用mywisdom88在2020-2-18 08:55:11的发言:

用2个字段关联做索引的,index 做法,我还从来没有做过,还真的不会写。
以前只做单字段的。

只用一句 index 应该不成,用 index on 和关联, 生成一个查询结果表就可以
2020-02-18 09:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
试了一下,用二次 index 生成查询表
原表tt

生成表tj

CREATE CURSOR tt (f1 I,f2 I)
INSERT INTO tt VALUES (1,3)
INSERT INTO tt VALUES (2,3)
INSERT INTO tt VALUES (3,3)
INSERT INTO tt VALUES (3,2)
INSERT INTO tt VALUES (2,1)
INSERT INTO tt VALUES (1,2)
INDEX on f2 TAG f2 DESCENDING
COPY TO tj
USE tj IN 0
SELECT tj
INDEX on f1 TAG f1 DESCENDING
BROWSE
2020-02-18 11:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
回复 8楼 吹水佬
刚才测试一下,2次index后,能排序,但好像是反了。而用SQL语句,正确。
图一;结果好像反了。

图二;SQL语句正常

图三;结果也反了。
2020-02-19 09:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用mywisdom88在2020-2-19 09:10:59的发言:

刚才测试一下,2次index后,能排序,但好像是反了。而用SQL语句,正确。

可能是index命令创建索引文件的算法问题,这样观察f2看看:
CREATE CURSOR tt (f1 I,f2 I)
INSERT INTO tt VALUES (1,1)
INSERT INTO tt VALUES (2,2)
INSERT INTO tt VALUES (3,3)
INSERT INTO tt VALUES (1,4)
INSERT INTO tt VALUES (2,5)
INSERT INTO tt VALUES (3,6)

无索引时


INDEX on f1 TAG f1 ASCENDING
f1升序时是从表头到表尾检索数据建索引文件


INDEX on f1 TAG f1 DESCENDING
f1降序时是从表尾到表头检索数据建索引文件


[此贴子已经被作者于2020-2-19 10:21编辑过]

2020-02-19 10:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499252-1-1.html




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

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