如何对Access数据库查询结果进行重新编号排序啊,自动编号的方式也行

以下是我的查询语句,pindex是主键,pindex可以不参与查询显示
SELECT pindex,devname,chanel,devip,pdate,speed,plate,ptype,pathname,direction FROM TPASSVEH
WHERE 1=1
我的意思是我要查询的数据是 pindex,devname,chanel,devip,pdate,speed,plate,ptype,pathname,direction
他的条件 WHERE 不仅是1=1 还有其他,比方说:
SELECT pindex,devname,chanel,devip,pdate,speed,plate,ptype,pathname,direction FROM TPASSVEH WHERE 1=1 AND speed>=45 AND speed<=60
我要在以上的查询结果中加入一个实现自动编号的列(可以假设这个列名称为AutoNum,查询结果可以不进行排序),因为下面要对这个AutoNum列(新加的自动编号列)的查询结果进行编辑,即我只通过 WHERE AutoNum=45 的条件就能显示出编号所对应的数据了
也就是说在内查询结果里新添加一个自动编号的列,外查询通过这个列来显示数据

需要用sql语句来处理。

比如原表数据如下:

现在要按出生日期从早到晚排列,并给出序号:

sql语句如下:

select t.* from
(select t1.*,(select count(*)+1 from è¡¨2 as t2 where t2.出生日期<t1.出生日期) as åºå· from è¡¨2 as t1) as t
order by åºå·;

结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-28
编号就不要在数据库上操作了一个是影响性能,二个是操作复杂。 你在前台显示数据的时候直接循环一个变量编号就可以了。
这段TSQLL语句真的乱, 你是想要做什么? 是想做分页吗? 你这样做太复杂了。
SELECT * FROM (SELECT ROWNUM AS RNO,* FROM (" SELECT (" + pgSql + ") AS ROWNUM, devname, chanel, devip, pdate, speed, plate, ptype, pathname FROM ("+ pgSql +") ) WHERE ROWNUM <= " + rowMax + ") WHERE RNO > " + rowMin
又是最大编号,又是最小编号。 一下 SELECT (" + pgSql + ") 一下又FROM ("+ pgSql +") 这不是乱搞的吗? 分页用top就行了。 例如:
select top 2 * from tbl_user_reg where 1=1 and id not in (select top 6 id from tbl_user_reg where 1=1) 意思是相同查询条件下获取第7、8条记录,这样就是依据id来排除前6条然后获取7、8条,top2就是每页显示2条,排除了前面6条也就是2*3当前是第四页了。 你用变量代替2和6即可达到分页的目的。 但是这样做的话必须依赖一个唯一的id列,而且not in不适合大数据量!
那么换另一种方式:
select * from ( select top 2 * from (select top 8 * from tbl_user_reg order by id asc) as a order by id desc) as b order by id asc
先查询前八条,再把这八条倒过来取最后两条,再把这两条倒过来(不倒过来也没关系咯呵呵)! 自己斟酌一下吧!本回答被提问者和网友采纳
第2个回答  2010-12-22
SELECT pindex,devname,chanel,devip,pdate,speed,plate,ptype,pathname,direction FROM TPASSVEH WHERE 1=1 order by pdate desc
order by pdate desc按时间倒序,order by pdate asc按时间正序,可以根据需要改变排序方式。将读取出来的数据存入一个数组中,这样就可以根据数据直接达到自动编号的效果,只是在输出的时候多了一步,不过操作起来比较简单。
第3个回答  2010-12-23
select * from table名称 where 字段1 = xxx order by 字段2
大概就是这样
相似回答