Oracle数据库高级查询(一)子查询
欢迎转载,转载请指明出处http://blog.csdn.net/hncsy403,谢谢
在一个SQL语句中嵌套另外一个sql语句称为子查询
而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句称为父查询
示例如下
如果需要查询商品类别中为图书的所有商品id,名称,价格
我们应进行这样的修改
将=操作符改为in,即
知道了ROWNUM,SQL就出来了
但这是错误的,错误的原因是
select的执行顺序
它总是先执行where子句再执行order by语句
而我们的要求是先对表的记录进行排序,再取前五条记录
其思路如下
如果有排序,先把排序后的表当成一个虚拟表,再进行操作
上述需求的SQL语句如下
select id,name,saledate,rownum from(select * from es_product order by saledate desc) where rownum<=5切记rownum是动态生成的,在表物理中不存在,所以诸如saledate.rownum并不存在