sql复习

来源:互联网 发布:软件著作权作品说明书 编辑:程序博客网 时间:2024/06/05 09:30

一、如果有排序的话,应该先对结果集进行排序,然后把结果集当成一个虚拟的表(也可做视图),然后使用ROWNUM取这个虚拟表(视图)的前N条记录

select id,name ROWNUM from (select * from product order by createdate desc)

where ROWNUM <=5;

ROWNUM为动态生成,在物理上并不存在,所以不能使用基表名作为前缀。

ROWNUM取值永远从1开始,它是每一次查询中动态生成的

当在from中使用子查询时,子查询将被作为虚拟表(视图)对待,该虚拟表接下来需要使用时,必须给子查询指定别名。

二、union和union all 都可以用作集合查询中“并集”操作,不过union all比union效率高,因为union查询出的结果剔除重复行,同时默认按第一个查询的第一列升序排列,而union all 不做这些。在业务要求允许时,最好使用效率高的union all.。

使用union\union all \interset \minus 连接两个select 语句中,查询的列数和列的数据类型要一致。

union 在做重复检查时不要忽略null,如果有重复行,则保留一个空行,interset和minus查询也无重复行,按第一个查询的第一列升序排列。

原创粉丝点击