如何取出数据库中的记录
我想从数据库中取出第10条和第20条之间的10条记录(这里说的第10条和第20条指的不是id序号,而是单纯的记录在数据库中所处的位置),但是由于过去删除记录的原因,这些记录的id序号并不连续,请问这个问题如何才能解决。
另:除了每次删除时对id进行update,有什么方法可以在删除记录时使得id序号自动变的连续呢
问题点数:20、回复次数:11Top
1 楼net_lover(【孟子E章】)回复于 2005-07-19 09:21:22 得分 0
数据库的记录位置没有任何意义Top
2 楼fphuang(人在哈尔滨·四月)回复于 2005-07-19 09:26:45 得分 20
string s ="Select top 20 * from tb where not exists (select top 10 * from tb);Top
3 楼ctimtide()回复于 2005-07-19 09:27:29 得分 0
那么请问如何能够取出记录呢Top
4 楼godgirl()回复于 2005-07-19 09:30:05 得分 0
我是新人我想是不是执行string s ="Select top 20 * from tb where not exists (select top 10 * from tb);
语句后把数据添加到DATASET中就可以取出记录了?Top
5 楼jimu8130(火箭的未来在哪里?)回复于 2005-07-19 10:29:58 得分 0
对你最后一个问题,你想过没有如果你更改id号的同时正好有个人查询这条记录并修改ing,你提交后他再提交这样会出现问题,当然你可以用锁的机制,但是如果这样的工作频繁的作就不好。不过这个可以由触发器完成,或者你指定一个专门时间,这个时间停止别人访问数据库,而你就重新生成这些id号Top
6 楼DRRDRRDRR(寂静深秋)回复于 2005-07-19 10:42:03 得分 0
这样无意义Top
7 楼ctimtide()回复于 2005-07-19 21:27:19 得分 0
用fphuang(笨牛@net) 的方法,我做如下修改:
string str="select top "+Convert.ToString(15+15*index1)+" * from production where not exist(select top "+Convert.ToString(15*index1)+" id from production )";
OleDbDataAdapter da=new OleDbDataAdapter(str,oleDbConnection1);
OleDbCommand cmd=da.SelectCommand;
oleDbConnection1.Open();
int i=cmd.ExecuteNonQuery();
Response.Write(i.ToString());
但结果显示所选择的记录条数为0(在这里index1=1),但我的数据库中存在18条记录,按说应该显示3条记录,大家看看这是为什么Top
8 楼ctimtide()回复于 2005-07-19 21:57:10 得分 0
upTop
9 楼zeusvenus()回复于 2005-07-19 22:20:49 得分 0
第一个存放的位置确实没什么意义,在你的数据库配置、环境设置等影响下每个top20可能是不一样的,一般采取加id列来定义前后然后order一下就行了。
第二个问题这样确实有稳定方面的隐患,写个触发器让从1开始调用序列(如为ORACLE)或增量种子(如为SQLSERVER)的值并增加。Top
10 楼shan1119(大天使,卐~解!)回复于 2005-07-19 22:22:08 得分 0
不知道Top
11 楼ctimtide()回复于 2005-07-20 10:04:20 得分 0
upTop




