暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T ORDER BY子句

墨天轮 2019-10-12
1137

ORDER BY子句

使用ORDER BY子句对查询语句返回的行根据指定的列进行排序。如果没有ORDER BY子句,则多次执行的同一查询将不一定以相同的顺序进行行的检索。

语法格式

ORDER [SIBLINGS] BY { column_name | number | expression } [ ASC | DESC ][ NULLS FIRST | NULLS LAST ] [ , ... ]

使用方法

ORDER BY语句默认按照升序对记录进行排序。如果希望按照降序对记录进行排序,请使用DESC关键字。

ORDER SIBLINGS BY指定兄弟节点之间用于排序的字段。

NULLS FIRST | NULLS LAST 关键字指定ORDER BY列中NULL值的排序位置,FIRST表示将NULL值排在最前面,LAST表示将NULL值排在最后面,若不指定该选项, ASC默认为NULLS LAST, DESC默认为NULLS FIRST。

示例

  • 查询各部门中各工种的奖金信息,查询结果先按job升序排列,然后按section_name降序排列。
--删除表bonuses_depa1。 DROP TABLE IF EXISTS bonuses_depa1;
--创建表bonuses_depa1。 CREATE TABLE bonuses_depa1(section_id INT NOT NULL, section_name VARCHAR(50), staff_id INT NOT NULL, staff_name CHAR(50), job VARCHAR(30), bonus NUMBER);
--向表bonuses_depa1中插入数据。 INSERT INTO bonuses_depa1(section_id, section_name,staff_id, staff_name, job, bonus) VALUES(1,'devepment',23,'wangxia','developer',5000); --向表bonuses_depa1中插入数据。 INSERT INTO bonuses_depa1(section_id, section_name,staff_id, staff_name, job, bonus) VALUES(2,'test',24,'limingying','tester',7000); --向表bonuses_depa1中插入数据。 INSERT INTO bonuses_depa1(section_id, section_name,staff_id, staff_name, job, bonus) VALUES(3,'quality',25,'liulili','quality control',8000); --向表bonuses_depa1中插入数据。 INSERT INTO bonuses_depa1(section_id, section_name,staff_id, staff_name, job, bonus) VALUES(2,'test',29,'liuxue','tester',8000); --向表bonuses_depa1中插入数据。 INSERT INTO bonuses_depa1(section_id, section_name,staff_id, staff_name, job, bonus) VALUES(4,'products',21,'caoming','document developer',11000); --提交。 COMMIT;
--查询各部门中各工种的奖金信息,查询结果先按job升序排列,然后按section_name降序排列。 SELECT section_name, job, bonus FROM bonuses_depa1 ORDER BY job, section_name DESC; SECTION_NAME JOB BONUS -------------------------------------------------- ------------------------------ ---------------------------------------- devepment developer 5000 products document developer 11000 quality quality control 8000 test tester 7000 test tester 8000 5 rows fetched.
--查询各部门中各工种的奖金信息,查询结果先按job升序排列,然后按section_name降序排列。在ORDER BY子句中使用位置表示法,数字表示该排序字段是查询字段列表的第几个字段。 SELECT section_name, job, bonus FROM bonuses_depa1 ORDER BY 2, 1 DESC; SECTION_NAME JOB BONUS -------------------------------------------------- ------------------------------ ---------------------------------------- devepment developer 5000 products document developer 11000 quality quality control 8000 test tester 7000 test tester 8000 5 rows fetched.
  • 使用ORDER SIBLINGS BY排序。
--删除表t_sibling_order。 DROP TABLE if exists t_sibling_order;
--创建表t_sibling_order。 create table t_sibling_order(EMPNO NUMBER(10) NOT NULL,ENAME VARCHAR2(10),MGR NUMBER(4));
--向表t_sibling_order中插入记录。 insert into t_sibling_order values (1,'M',NULL); insert into t_sibling_order values (2,'N',NULL); insert into t_sibling_order values (3,'A',NULL); insert into t_sibling_order values (4,'C',3); insert into t_sibling_order values (5,'B',3); insert into t_sibling_order values (6,'F',4); insert into t_sibling_order values (7,'E',4); insert into t_sibling_order values (8,'D',5); insert into t_sibling_order values (9,'G',5);
---使用ORDER SIBLINGS BY排序查询。 SELECT LEVEL, t.empno, t.ename FROM t_sibling_order t START WITH t.mgr IS NULL CONNECT BY PRIOR t.empno = t.mgr ORDER SIBLINGS BY t.ename;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论