1 SELECT 日期 FROM s_tech.每日刷卡 2 WHERE 員工卡號='129297' AND 日期>='2014/08/01'
如上代码查询的结果是:
,每次查询结果的顺序都是不相同,是要在哪里设置吗?数据表是从SQL主机上提取到本机数据库里面的,在主机上查询的记过顺序是固定的。
我在本机用Cursor查询未按日期正常排序的结果是固定的2014--08-01、~9,~5,~7,~6,~11,~8,~2号,在主机上执行只提示是查询执行成功而看不到Cursor结果。哪里设置问题吗?
以前书上看过,不过不太确定,帮你Google了一段文字。以下是文字:
1、哈哈,你对现代数据库软件的管理方式的理解还不够。
2、现代的数据库软件存取数据时,在物理上是不会按某种默认的顺序的,即便内部按顺序,它取出数据展示给你时,也不会用某种固定的顺序,因为,它的做派是,先取到哪个合要求的数据就取哪个。也许,今天是这几个在前面,明天可能就是那几个在前面了。对此,你不能纠结,也不必纠结。
3、那怎么办?就让它无序的展示给我们吗?那谁受得了?!哈哈,你如果对顺序有要求,你应该“说”出来,你不说,人家怎么知道呢。现在的数据库你要按某顺序取数据,请你加上“ORDER”指令,比如:
SELECT A.* FROM TABLE_1 A ORDER BY A.ID
(注意上面的指令中,TABLE_1 表中应该有ID字段)
4、如果你的表中经常会用到某种顺序取出展现,在建立表时针对性加上索引会使表的查询速度得到一定的提高。
我在主机上执行上面那条SQL结果集顺序一直是固定的,在本机上就不是。
我是不想用ORDER BY 来排序,就是为了看那些记录没按日期正常排序
@Cornelius: 对于数据库引擎来说,他是没有办法知道先和后这个差别的。
你所谓的先后,可能是根据记录插入的时间。如果是这样的话,通常我是有一个专用字段来保存创建时间的,
以前还有人根据自增ID来排序,但长大以后发现那也是Too young too simple。因为自增ID达到最大值以后,数据库引擎是会取出以前没有用过的值来当ID的,所以这个也不保险。
总之,不要想当然,电脑不是人,就算是人,其实默认也是有个字段的,就是所谓的先后,
这个先后,数据库引擎如何知道,要么就要有一个隐藏的字段(你看不到)来表示,
而现代的数据库引擎认为数据是无序的,你需要顺序是吗?请设计一个字段来保存,谢谢!
order by 一下就可以了。
看你以为什么排序吧. 自己要一定的顺序就order by 一下
你的主键是什么?
从你的表象看,是主键使用了GUID,同时GUID是非有序的生成。
具体的,就看你的实际的主排序键了,很难说清楚,需要你把表结构贴出来。
本身就是没有顺序的,即便是你的表里有顺序,它也不会按照顺序取 如果你加上order by 后他就会给你邮顺序了。他会帮你写入相应的数据库缓存里面