首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle数据库高级查询(1)子查询

2012-09-11 
Oracle数据库高级查询(一)子查询欢迎转载,转载请指明出处http://blog.csdn.net/hncsy403,谢谢在一个SQL语

Oracle数据库高级查询(一)子查询

欢迎转载,转载请指明出处http://blog.csdn.net/hncsy403,谢谢


在一个SQL语句中嵌套另外一个sql语句称为子查询

而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句称为父查询

示例如下

如果需要查询商品类别中为图书的所有商品id,名称,价格



我们应进行这样的修改

将=操作符改为in,即


知道了ROWNUM,SQL就出来了


但这是错误的,错误的原因是

select的执行顺序

它总是先执行where子句再执行order by语句

而我们的要求是先对表的记录进行排序,再取前五条记录

其思路如下

Oracle数据库高级查询(1)子查询

如果有排序,先把排序后的表当成一个虚拟表,再进行操作

上述需求的SQL语句如下

select id,name,saledate,rownum from(select * from es_product order by saledate desc) where rownum<=5
切记rownum是动态生成的,在表物理中不存在,所以诸如saledate.rownum并不存在






热点排行