zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

PostgreSQL Oracle 兼容性 - order by INT(select位置 position)

Oraclepostgresql 位置 by SELECT int order 兼容性
2023-09-27 14:27:57 时间
背景

在一些Oracle的用户中,会问到是否支持order by INT这样的查询语法。它是什么意思呢?实际上就是按查询子句的第几个表达式进行排序。

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10002.htm

ORDER [ SIBLINGS ] BY 

{ expr | position | c_alias } 

[ ASC | DESC ] 

[ NULLS FIRST | NULLS LAST ] 

 [, { expr | position | c_alias } 

 [ ASC | DESC ] 

 [ NULLS FIRST | NULLS LAST ] 

 ]... 

按 表达式、列别名、select位置排序。

PostgreSQL也支持这种语法。

PostgreSQL order by支持

PostgreSQL 天然支持 order by [字段、表达式、位置]。

 [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] 

Each expression can be the name or ordinal number of an output column (SELECT list item), or it can be an arbitrary expression formed from input-column values. 

例子

1、按别名排序

postgres=# explain select relpages as ooo,* from pg_class order by ooo; 

 QUERY PLAN 

------------------------------------------------------------------- 

 Sort (cost=71.81..73.32 rows=602 width=737) 

 Sort Key: relpages 

 - Seq Scan on pg_class (cost=0.00..44.02 rows=602 width=737) 

(3 rows) 

2、按SELECT中的位置排序

postgres=# explain select relpages,reltuples,relname from pg_class order by 2 limit 1; 

 QUERY PLAN 

------------------------------------------------------------------------ 

 Limit (cost=47.03..47.03 rows=1 width=72) 

 - Sort (cost=47.03..48.54 rows=602 width=72) 

 Sort Key: reltuples 

 - Seq Scan on pg_class (cost=0.00..44.02 rows=602 width=72) 

(4 rows) 

3、按表达式排序

postgres=# explain select relpages,reltuples,relname from pg_class order by reltuples+relpages limit 1; 

 QUERY PLAN 

------------------------------------------------------------------------ 

 Limit (cost=50.04..50.04 rows=1 width=80) 

 - Sort (cost=50.04..51.55 rows=602 width=80) 

 Sort Key: ((reltuples + (relpages)::double precision)) 

 - Seq Scan on pg_class (cost=0.00..47.03 rows=602 width=80) 

(4 rows) 

参考

https://www.postgresql.org/docs/10/static/sql-select.html

https://www.postgresql.org/docs/10/static/sql-expressions.html#sql-syntax-collate-exprs


解读PostgreSQL Oracle 兼容性之 - performance insight(性能洞察) PostgreSQL , perf insight , 等待事件 , 采样 , 发现问题 , Oracle 兼容性 通常普通的监控会包括系统资源的监控: 等,但是仅凭资源的监控,当问题发生时,如何快速的定位到问题在哪里?需要更高级的监控: 更高级的监控方法通常是从数据库本身的
Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用 1,首先切换到Oracle用户,并进入数据库#sql / as sysdba2,启动数据库,并连接样例及表格,启动命令#startup,连接样例#conn scott/tiger3,select语句中:不区分大小写;可以写一行或多行,为方便查看最好每个子句单独一行;语句以“;”结尾结束语句4,se.