1. 程式人生 > 資料庫 >PostgreSQL 實現給查詢列表增加序號操作

PostgreSQL 實現給查詢列表增加序號操作

利用 ROW_NUMBER() over( ) 給查詢序列增加排序欄位

SELECT ROW_NUMBER() over(ORDER bY biztypename DESC ) AS num,biztypename 
FROM (SELECT DISTINCT biztypename FROM bizmaptype) t;

效果如下:

PostgreSQL 實現給查詢列表增加序號操作

補充:PostgreSql 使用自定義序列(Sequence)向表插入資料 id 自增長

按照以往Oracle建表的流程,我們來新建表,並且向表中匯入資料。

1.建立Book表

CREATE TABLE book(
 id INTEGER PRIMARY KEY,name CHARACTER VARYING(50),price DOUBLE PRECISION,author CHARACTER VARYING(20)
);

PRIMARY KEY 將id設定為主鍵;

資料型別

型別名稱 別名 描述

integer int,int4 有正負之分的4位元組整數

character varying [ (n) ] varchar [ (n) ]

可變長度的字串

double precision float8 雙精度浮點數(8位元組)

更多型別請參考文件:https://www.postgresql.org/docs/9.3/static/datatype.html

2.建立自動增長序列

CREATE SEQUENCE book_id_seq
 START WITH 1
 INCREMENT BY 1
 NO MINVALUE
 NO MAXVALUE
 CACHE 1;

引數 描述

START WITH 設定起始值,允許序列從任何地方開始

INCREMENT BY 設定增量,指定在哪個值得基礎上建立新值,正值將產生遞增序列,負值將產生遞減序列;預設值為1。

NO MINVALUE 設定序列可以生成的最小值,如果未指定NO MINVALUE,對於升序和降序序列,預設值分別為1和。

NO MAXVALUE 設定序列可以生成的最大值,如果未指定此子句,將使用預設值,對於升序和降序序列,預設值為和-1。

CACHE 設定快取記憶體,要分配多少序列號並將其存貯在記憶體中方便更快的訪問,最小值為1,預設值也是1。

3.為book表新增自動增長序列

ALTER TABLE book ALTER COLUMN id SET DEFAULT nextval('book_id_seq');

4.向book表Insert資料

INSERT INTO public.book VALUES (nextval('book_id_seq'),'《本色》',30.5,'樂嘉');
INSERT INTO public.book VALUES (nextval('book_id_seq'),'《平凡世界》',90.5,'路遙');
INSERT INTO public.book VALUES (nextval('book_id_seq'),'《Java程式設計思想》',60.5,'詹姆斯·高斯林');
INSERT INTO public.book VALUES (nextval('book_id_seq'),'《Web高階程式設計》',50.5,'李三');

5.查詢book表中資料

SELECT * FROM public.book;

查詢結果:

6.相關序列操作:

--查詢序列 (每查詢一次,序列就做了一次+1操作,即查詢下一次的value)
SELECT nextval('book_id_seq'); 
--移除序列
DROP SEQUENCE 'book_id_seq';

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。