添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
暂无图片
暂无图片
暂无图片
暂无图片

从 Oracle 到 PostgreSQL :如何实现 rownum 的行号查询效果

eygle 2020-06-01
4459

在 Oracle 数据库中,Rownum 是非常常用的一个查询输出,通过 rownum 可以为结果记录增加一个类似行号的标识,在 PostgreSQL 数据库中缺省没有 Rownum 这个功能,但是可以通过分析函数来实现类似的效果。

# select row_number() OVER (ORDER BY name) ,name from pg_settings;
 row_number |                name                
------------+------------------------------------
          1 | DateStyle
          2 | FencedUDFMemoryLimit
          3 | IntervalStyle
          4 | RepOriginId
          5 | TimeZone
          6 | UDFWorkerMemHardLimit
          7 | acce_min_datasize_per_thread
          8 | acceleration_with_compute_pool
          9 | advance_xlog_file_num
         10 | alarm_component
         11 | alarm_report_interval
         12 | allocate_mem_cost
         13 | allow_concurrent_tuple_update
         14 | allow_system_table_mods
         15 | analysis_options
         16 | application_name
         17 | archive_command
         18 | archive_mode
         19 | archive_timeout
         20 | array_nulls
         21 | audit_copy_exec
         22 | audit_data_format
         23 | audit_database_process
         24 | audit_directory
         25 | audit_dml_state
         26 | audit_dml_state_select
         27 | audit_enabled
         28 | audit_file_remain_threshold
         29 | audit_file_remain_time
         30 | audit_function_exec
         31 | audit_grant_revoke
         32 | audit_login_logout
         33 | audit_resource_policy
         34 | audit_rotation_interval
         35 | audit_rotation_size
         36 | audit_set_parameter
         37 | audit_space_limit
         38 | audit_system_object
         39 | audit_user_locked
         40 | audit_user_violation
         41 | auth_iteration_count
         42 | authentication_timeout
         43 | autoanalyze
         44 | autoanalyze_timeout
         45 | autovacuum
         46 | autovacuum_analyze_scale_factor
         47 | autovacuum_analyze_threshold
         48 | autovacuum_freeze_max_age
         49 | autovacuum_io_limits
         50 | autovacuum_max_workers
         51 | autovacuum_mode
         52 | autovacuum_naptime
         53 | autovacuum_vacuum_cost_delay
         54 | autovacuum_vacuum_cost_limit
         55 | autovacuum_vacuum_scale_factor
         56 | autovacuum_vacuum_threshold
         57 | backend_flush_after
         58 | backslash_quote
         59 | backtrace_min_messages
         60 | backwrite_quantity
         61 | bbox_dump_count
         62 | bbox_dump_path
         63 | behavior_compat_options
         64 | bgwriter_delay
         65 | bgwriter_flush_after
         66 | bgwriter_lru_maxpages
         67 | bgwriter_lru_multiplier
         68 | block_size
         69 | bulk_read_ring_size
         70 | bulk_write_ring_size
         71 | bytea_output
         72 | cache_connection
         73 | cgroup_name
         74 | check_function_bodies
         75 | check_implicit_conversions
         76 | checkpoint_completion_target
         77 | checkpoint_flush_after
         78 | checkpoint_segments
         79 | checkpoint_timeout
         80 | checkpoint_wait_timeout
         81 | checkpoint_warning
         82 | client_encoding
         83 | client_min_messages
         84 | cn_send_buffer_size
         85 | codegen_cost_threshold
         86 | codegen_mot_limit
         87 | codegen_strategy
         88 | comm_ackchk_time
         89 | comm_control_port
         90 | comm_debug_mode
         91 | comm_max_receiver
         92 | comm_memory_pool
         93 | comm_memory_pool_percent
         94 | comm_no_delay
         95 | comm_quota_size
         96 | comm_sctp_port
         97 | comm_stat_mode
         98 | comm_tcp_mode
         99 | comm_timer_mode
        100 | comm_usable_memory
        101 | commit_delay
        102 | commit_siblings
        103 | config_file
        104 | connection_alarm_rate
        105 | connection_info
        106 | constraint_exclusion
        107 | convert_string_to_digit
        108 | cost_param
        109 | cpu_collect_timer
        110 | cpu_index_tuple_cost
        111 | cpu_operator_cost
        112 | cpu_tuple_cost
        113 | cstore_backwrite_max_threshold
        114 | cstore_backwrite_quantity
        115 | cstore_buffers
        116 | cstore_insert_mode
        117 | cstore_prefetch_quantity
        118 | current_logic_cluster
        119 | current_schema
        120 | cursor_tuple_fraction
        121 | data_directory
        122 | data_replicate_buffer_size
        123 | data_sync_retry
        124 | datanode_heartbeat_interval
        125 | deadlock_timeout
        126 | debug_assertions
        127 | debug_pretty_print
        128 | debug_print_parse
        129 | debug_print_plan
        130 | debug_print_rewritten
        131 | default_statistics_target
        132 | default_storage_nodegroup
        133 | default_tablespace
        134 | default_text_search_config
        135 | default_transaction_deferrable
        136 | default_transaction_isolation
        137 | default_transaction_read_only
        138 | default_with_oids
        139 | defer_csn_cleanup_time
        140 | dfs_partition_directory_length
        141 | disable_memory_protect
        142 | dynamic_library_path
        143 | effective_cache_size
        144 | effective_io_concurrency
        145 | enableSeparationOfDuty
        146 | enable_absolute_tablespace
        147 | enable_access_server_directory
        148 | enable_adio_debug
        149 | enable_adio_function
        150 | enable_alarm
        151 | enable_analyze_check
        152 | enable_bbox_dump
        153 | enable_beta_features
        154 | enable_beta_nestloop_fusion
        155 | enable_beta_opfusion
        156 | enable_bitmapscan
        157 | enable_bloom_filter
        158 | enable_broadcast
        159 | enable_cbm_tracking
        160 | enable_change_hjcost
        161 | enable_codegen
        162 | enable_codegen_mot
        163 | enable_codegen_mot_print
        164 | enable_codegen_print
        165 | enable_compress_spill
        166 | enable_constraint_optimization
        167 | enable_copy_server_files
        168 | enable_csqual_pushdown
        169 | enable_data_replicate
        170 | enable_debug_vacuum
        171 | enable_delta_store
        172 | enable_double_write
        173 | enable_early_free
        174 | enable_extrapolation_stats
        175 | enable_fast_allocate
        176 | enable_fast_numeric
        177 | enable_force_vector_engine
        178 | enable_global_plancache
        179 | enable_global_stats
        180 | enable_hadoop_env
        181 | enable_hashagg
        182 | enable_hashjoin
        183 | enable_hdfs_predicate_pushdown
        184 | enable_incremental_catchup
        185 | enable_incremental_checkpoint
        186 | enable_index_nestloop
        187 | enable_indexonlyscan
        188 | enable_indexscan
        189 | enable_instance_metric_persistent
        190 | enable_instr_cpu_timer
        191 | enable_instr_rt_percentile
        192 | enable_instr_track_wait
        193 | enable_kill_query
        194 | enable_light_proxy
        195 | enable_logical_io_statistics
        196 | enable_material
        197 | enable_memory_context_control
        198 | enable_memory_limit
        199 | enable_mergejoin
        200 | enable_mix_replication
        201 | enable_nestloop
        202 | enable_nodegroup_debug
        203 | enable_nonsysadmin_execute_direct
        204 | enable_online_ddl_waitlock
        205 | enable_opfusion
        206 | enable_orc_cache
        207 | enable_page_lsn_check
        208 | enable_parallel_ddl
        209 | enable_partitionwise
        210 | enable_pbe_optimization
        211 | enable_prevent_job_task_startup
        212 | enable_resource_record
        213 | enable_resource_track
        214 | enable_save_datachanged_timestamp
        215 | enable_seqscan
        216 | enable_show_any_tuples
        217 | enable_slot_log
        218 | enable_sonic_hashagg
        219 | enable_sonic_hashjoin
        220 | enable_sonic_optspill
        221 | enable_sort
        222 | enable_stream_replication
        223 | enable_thread_pool
        224 | enable_tidscan
        225 | enable_trigger_shipping
        226 | enable_twophase_commit
        227 | enable_upgrade_merge_lock_mode
        228 | enable_user_metric_persistent
        229 | enable_valuepartition_pruning
        230 | enable_vector_engine
        231 | enable_wdr_snapshot
        232 | enable_xlog_prune
        233 | enforce_oracle_behavior
        234 | enforce_two_phase_commit
        235 | escape_string_warning
        236 | event_source
        237 | exit_on_error
        238 | expected_computing_nodegroup
        239 | explain_dna_file
        240 | explain_perf_mode
        241 | external_pid_file
        242 | extra_float_digits
        243 | failed_login_attempts
        244 | fast_extend_file_size
        245 | fault_mon_timeout
        246 | force_bitmapand
        247 | force_pseudo_codegen_mot
        248 | from_collapse_limit
        249 | fsync
        250 | full_page_writes
        251 | gds_debug_mod
        252 | geqo
        253 | geqo_effort
        254 | geqo_generations
        255 | geqo_pool_size
        256 | geqo_seed
        257 | geqo_selection_bias
        258 | geqo_threshold
        259 | gin_fuzzy_search_limit
        260 | gin_pending_list_limit
        261 | gs_clean_timeout
        262 | ha_module_debug
        263 | hashagg_table_size
        264 | hba_file
        265 | hot_standby
        266 | hot_standby_feedback
        267 | ident_file
        268 | ignore_checksum_failure
        269 | ignore_system_indexes
        270 | incremental_checkpoint_timeout
        271 | instance_metric_retention_time
        272 | instr_rt_percentile_interval
        273 | instr_unique_sql_count
        274 | instr_unique_sql_track_type
        275 | integer_datetimes
        276 | io_control_unit
        277 | io_limits
        278 | io_priority
        279 | job_queue_processes
        280 | join_collapse_limit
        281 | krb_caseins_users
        282 | krb_server_keyfile
        283 | krb_srvname
        284 | lastval_supported
        285 | lc_collate
        286 | lc_ctype
        287 | lc_messages
        288 | lc_monetary
        289 | lc_numeric
        290 | lc_time
        291 | listen_addresses
        292 | lo_compat_privileges
        293 | local_bind_address
        294 | local_preload_libraries
        295 | lockwait_timeout
        296 | log_autovacuum_min_duration
        297 | log_checkpoints
        298 | log_connections
        299 | log_destination
        300 | log_directory
        301 | log_disconnections
        302 | log_duration
        303 | log_error_verbosity
        304 | log_executor_stats
        305 | log_file_mode
        306 | log_filename
        307 | log_hostname
        308 | log_line_prefix
        309 | log_lock_waits
        310 | log_min_duration_statement
        311 | log_min_error_statement
        312 | log_min_messages
        313 | log_pagewriter
        314 | log_parser_stats
        315 | log_planner_stats
        316 | log_rotation_age
        317 | log_rotation_size
        318 | log_statement
        319 | log_statement_stats
        320 | log_temp_files
        321 | log_timezone
        322 | log_truncate_on_rotation
        323 | logging_collector
        324 | logging_module
        325 | maintenance_work_mem
        326 | max_cached_tuplebufs
        327 | max_changes_in_memory
        328 | max_cn_temp_file_size
        329 | max_compile_functions
        330 | max_connections
        331 | max_files_per_process
        332 | max_function_args
        333 | max_identifier_length
        334 | max_index_keys
        335 | max_loaded_cudesc
        336 | max_locks_per_transaction
        337 | max_pred_locks_per_transaction
        338 | max_prepared_transactions
        339 | max_process_memory
        340 | max_query_retry_times
        341 | max_recursive_times
        342 | max_replication_slots
        343 | max_resource_package
        344 | max_stack_depth
        345 | max_standby_archive_delay
        346 | max_standby_streaming_delay
        347 | max_user_defined_exception
        348 | max_wal_senders
        349 | memory_detail_tracking
        350 | memory_tracking_mode
        351 | memorypool_enable
        352 | memorypool_size
        353 | minimum_pool_size
        354 | modify_initial_password
        355 | most_available_sync
        356 | mot_allow_index_on_nullable_column
        357 | mot_config_file
        358 | ngram_gram_size
        359 | ngram_grapsymbol_ignore
        360 | ngram_punctuation_ignore
        361 | nls_timestamp_format
        362 | numa_distribute_mode
        363 | omit_encoding_error
        364 | opfusion_debug_mode
        365 | pagewriter_sleep
        366 | pagewriter_thread_num
        367 | pagewriter_threshold
        368 | partition_lock_upgrade_timeout
        369 | partition_max_cache_size
        370 | partition_mem_batch
        371 | password_effect_time
        372 | password_encryption_type
        373 | password_lock_time
        374 | password_max_length
        375 | password_min_digital
        376 | password_min_length
        377 | password_min_lowercase
        378 | password_min_special
        379 | password_min_uppercase
        380 | password_notify_time
        381 | password_policy
        382 | password_reuse_max
        383 | password_reuse_time
        384 | percentile
        385 | pgxc_node_name
        386 | plan_cache_mode
        387 | plan_mode_seed
        388 | pljava_vmoptions
        389 | plog_merge_age
        390 | pooler_maximum_idle_time
        391 | port
        392 | post_auth_delay
        393 | pre_auth_delay
        394 | prefetch_quantity
        395 | primary_slotname
        396 | psort_work_mem
        397 | qrw_inlist2join_optmode
        398 | query_band
        399 | query_dop
        400 | query_max_mem
        401 | query_mem
        402 | quote_all_identifiers
        403 | raise_errors_if_no_files
        404 | random_page_cost
        405 | recovery_max_workers
        406 | recovery_parallelism
        407 | recovery_parse_workers
        408 | recovery_redo_workers
        409 | recovery_time_target
        410 | remote_read_mode
        411 | remotetype
        412 | replconninfo1
        413 | replconninfo2
        414 | replconninfo3
        415 | replconninfo4
        416 | replconninfo5
        417 | replconninfo6
        418 | replconninfo7
        419 | replication_type
        420 | require_ssl
        421 | resource_track_cost
        422 | resource_track_duration
        423 | resource_track_level
        424 | resource_track_log
        425 | restart_after_crash
        426 | retry_ecode_list
        427 | rewrite_rule
        428 | schedule_splits_threshold
        429 | search_path
        430 | segment_size
        431 | seq_page_cost
        432 | server_encoding
        433 | server_version
        434 | server_version_num
        435 | session_history_memory
        436 | session_replication_role
        437 | session_respool
        438 | session_statistics_memory
        439 | session_timeout
        440 | shared_buffers
        441 | shared_preload_libraries
        442 | show_acce_estimate_detail
        443 | skew_option
        444 | sql_compatibility
        445 | sql_inheritance
        446 | sql_use_spacelimit
        447 | ssl
        448 | ssl_ca_file
        449 | ssl_cert_file
        450 | ssl_ciphers
        451 | ssl_crl_file
        452 | ssl_key_file
        453 | ssl_renegotiation_limit
        454 | standard_conforming_strings
        455 | standby_shared_buffers_fraction
        456 | statement_timeout
        457 | stats_temp_directory
        458 | string_hash_compatible
        459 | support_batch_bind
        460 | support_extended_features
        461 | synchronize_seqscans
        462 | synchronous_commit
        463 | synchronous_standby_names
        464 | sysadmin_reserved_connections
        465 | syslog_facility
        466 | syslog_ident
        467 | table_skewness_warning_rows
        468 | table_skewness_warning_threshold
        469 | tcp_keepalives_count
        470 | tcp_keepalives_idle
        471 | tcp_keepalives_interval
        472 | td_compatible_truncation
        473 | temp_buffers
        474 | temp_file_limit
        475 | temp_tablespaces
        476 | thread_pool_attr
        477 | timezone_abbreviations
        478 | topsql_retention_time
        479 | trace_notify
        480 | trace_recovery_messages
        481 | trace_sort
        482 | track_activities
        483 | track_activity_query_size
        484 | track_counts
        485 | track_functions
        486 | track_io_timing
        487 | track_sql_count
        488 | track_thread_wait_status_interval
        489 | transaction_deferrable
        490 | transaction_isolation
        491 | transaction_pending_time
        492 | transaction_read_only
        493 | transaction_sync_naptime
        494 | transaction_sync_timeout
        495 | transform_null_equals
        496 | transparent_encrypt_kms_region
        497 | transparent_encrypt_kms_url
        498 | transparent_encrypted_string
        499 | twophase_clean_workers
        500 | udf_memory_limit
        501 | uncontrolled_memory_context
        502 | unix_socket_directory
        503 | unix_socket_group
        504 | unix_socket_permissions
        505 | update_lockwait_timeout
        506 | update_process_title
        507 | upgrade_mode
        508 | use_workload_manager
        509 | user_metric_retention_time
        510 | vacuum_cost_delay
        511 | vacuum_cost_limit
        512 | vacuum_cost_page_dirty
        513 | vacuum_cost_page_hit
        514 | vacuum_cost_page_miss
        515 | vacuum_defer_cleanup_age
        516 | vacuum_freeze_min_age
        517 | vacuum_freeze_table_age
        518 | wait_dummy_time
        519 | wal_block_size
        520 | wal_buffers
        521 | wal_keep_segments
        522 | wal_level
        523 | wal_log_hints
        524 | wal_receiver_buffer_size
        525 | wal_receiver_connect_retries
        526 | wal_receiver_connect_timeout
        527 | wal_receiver_status_interval
        528 | wal_receiver_timeout
        529 | wal_segment_size
        530 | wal_sender_timeout
        531 | wal_sync_method
        532 | wal_writer_delay
        533 | walsender_max_send_size
        534 | wdr_snapshot_interval
        535 | wdr_snapshot_query_timeout
        536 | wdr_snapshot_retention_days
        537 | work_mem
        538 | xc_maintenance_mode
        539 | xloginsert_locks
        540 | xmlbinary
        541 | xmloption
        542 | zero_damaged_pages

如果不需要排序,则更加简单:

# select row_number() over() as rownum,name from pg_settings;
 rownum |                name                
--------+------------------------------------
      1 | acce_min_datasize_per_thread
      2 | acceleration_with_compute_pool
      3 | advance_xlog_file_num
      4 | alarm_component
      5 | alarm_report_interval
      6 | allocate_mem_cost
      7 | allow_concurrent_tuple_update
      8 | allow_system_table_mods
      9 | analysis_options
     10 | application_name
     11 | archive_command
     12 | archive_mode
     13 | archive_timeout
     14 | array_nulls
     15 | audit_copy_exec
     16 | audit_data_format
     17 | audit_database_process
     18 | audit_directory
     19 | audit_dml_state