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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对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 序号;

结果

参考技术A 编号就不要在数据库上操作了一个是影响性能,二个是操作复杂。 你在前台显示数据的时候直接循环一个变量编号就可以了。
这段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
先查询前八条,再把这八条倒过来取最后两条,再把这两条倒过来(不倒过来也没关系咯呵呵)! 自己斟酌一下吧!本回答被提问者和网友采纳
参考技术B 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按时间正序,可以根据需要改变排序方式。将读取出来的数据存入一个数组中,这样就可以根据数据直接达到自动编号的效果,只是在输出的时候多了一步,不过操作起来比较简单。
参考技术C select * from table名称 where 字段1 = xxx order by 字段2
大概就是这样

如何根据 ComosDb 中的聚合函数结果对查询结果进行排序?

【中文标题】如何根据 ComosDb 中的聚合函数结果对查询结果进行排序?【英文标题】:How to order results of a query by the results of an aggregate function in ComosDb? 【发布时间】:2020-03-17 07:00:06 【问题描述】:

我使用 Cosmos Db,我需要按 COUNT 的结果对结果进行排序。

我更喜欢直接在 Cosmosdb 的查询输出中对结果进行排序,而不是每次自己对结果进行排序(或为其创建服务)。

在 Azure 的文档资源管理器中,我对 AggregatedEvent 集合执行以下请求:

SELECT * FROM (
    SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a
    WHERE a.AlarmType != null and a.Prom > 0
    GROUP BY a.AlarmType ) AS g
ORDER BY g.AlarmCount

它会导致以下错误消息:

无法解析标识符“AlarmCount”。

如果我使用另一个属性来排序 g.AlarmType,一个存在于文档中的属性,则执行排序。

仅当您有办法使用 CosmosDb 归档订购时,请添加答案。

【问题讨论】:

a.AlarmType != null 应该是 a.AlarmType IS NOT NULL 你确定你说的是 CosmosDB SQL 而不是 TransactSQL for SQL Server 吗? 我说的是一般的 SQL。 ( 标签表示“对带有 SQL 标记的问题的答案应使用 ISO/IEC 标准 SQL。”)CosmosDB 在这里的工作方式是否有所不同? 是的,看来 IEC 标准 SQL 'IS NOT NULL' 不符合 Microsoft SQL。 截至 2020 年 5 月,此查询返回一个更具描述性的错误“ORDER BY 项目表达式无法映射到文档路径”,但仍然不起作用。 【参考方案1】:

截至 2021 年 10 月,此功能仍不受支持。 Microsoft 的文档在这里定义了限制:https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-group-by

GROUP BY 子句不允许以下任何一项:

别名属性或别名系统函数(在 SELECT 子句中仍然允许别名) 子查询 聚合系统函数(仅允许在 SELECT 子句中使用)

【讨论】:

【参考方案2】:

我认为您可以通过在查询中使用 order by 来实现结果。如下所示。

SELECT * FROM (
   SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a
   WHERE a.AlarmType != null and a.Prom > 0
   GROUP BY a.AlarmType ORDER BY COUNT(1) ) AS g

SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a
   WHERE a.AlarmType != null and a.Prom > 0
   GROUP BY a.AlarmType ORDER BY COUNT(1)

但是 cosmos db 更喜欢查询中每个条件的别名,因此您得到的错误。

【讨论】:

不,我在尝试嵌套查询之前尝试过这个,错误是:存在 GROUP BY 时不支持“ORDER BY”。

以上是关于如何对Access数据库查询结果进行重新编号排序啊,自动编号的方式也行的主要内容,如果未能解决你的问题,请参考以下文章

access 排序问题。如何自定义排序?

在sql语句中,ORDERBY子句的功能是()

oracle 表中如何对按含有字母和数字的编号来进行排序

Azure DevOps对查询结果中的工作项进行重新排序

ACCESS:重新排列查询结果

office2007里的access数据库,怎么对2张表进行关联查询啊