经过这几年 在项目中的实际经验 想把有些东西写下来。今天先写 排序上面的东西, 随便点吧, 想到哪写到哪 , 这里是 oracle 11 g
随机排序: select * from scott.emp order by dbms_random.value();
对了 还有 order by 1: select * from scott.emp order by 1 desc;
组合排序 select * from scott.emp order by 8 asc, 5 desc; / select * from scott.emp order by deptno asc, sal desc;
空值排序: select * from scott.emp order by comm nulls first;
select * from scott.emp order by comm nulls last;
把特殊值排在最前:
select * from scott.emp order by case when job='ANALYST' then 1 else 2 end ;
select * from scott.emp order by case job when 'ANALYST' then 1 when 'SALESMAN' then 2 else 3 end ;
把特殊值排在最前: 也有童鞋 是
select scott.emp.*, case when job='ANALYST' then 1 else 2 end orderCase from scott.emp order by orderCase ; 当然也可以。 按照特殊值排序,一般是固定的那么几个值。
不过很多时候 我们排序 用起来是很谨慎的, 主要是在性能上面考虑的, 排序一般是在 PGA 内存区排序的, 如果PGA内存不够装载数据, 会在磁盘上划分空间来存储数据,然后再排序, 这叫磁盘排序, 再内存中排序花的费就大了, 如果磁盘排序就会更大的......