最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle数据库高级查询

来源:动视网 责编:小采 时间:2020-11-09 11:17:10
文档

Oracle数据库高级查询

Oracle数据库高级查询:在一个SQL语句中嵌套另外一个sql语句称为子查询,而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句 在一个SQL语句中嵌套另外一个sql语句称为子查询 而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个s
推荐度:
导读Oracle数据库高级查询:在一个SQL语句中嵌套另外一个sql语句称为子查询,而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句 在一个SQL语句中嵌套另外一个sql语句称为子查询 而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个s


在一个SQL语句中嵌套另外一个sql语句称为子查询,而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句

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

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

示例如下

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

  • 在where条件中子查询的一般实现步骤如下:
    1.我们得先知道需要查询的是什么,明确要显示的结果

    比如说我们上述的就是id,name,price


    2.结果来源于哪里

    显然这些商品的相关信息来自于商品表es_product


    3.需要的查询条件是什么

    这里需要的是查询分类为图书,就是sort_id=(图书类别id)


    4.条件中需要的值来源于哪里

    它来自于一个子查询

    sort_id=(SELECT id FROM es_sort WHERE sortname =' 图书')


    5.最后子查询的sql语句就自然而然出来了


    又例如,我们要查询以李青青为下单人的订单号,收货方式以及订单状态

    1.明确显示的结果 id,payment,status

    2.结果来自于哪里 es_order

    3.需要的条件 user_id=('李青青'的id)

    4.这个条件需要的值来自于一个子查询

    user_id =(select id from es_user where realname='李青青')


    以上说的子查询都是返回的是单行结果,,因此使用了=的操作符,

    其实我们可以使用>\>=\<\<=\<>\!=的操作符

    例如,我们要编写sql语句,查询大于商品平均价格的商品id,名称,价格

  • 但是有时子查询返回的结果可能不止一行

    比如要查询一号订单下的所有商品id,商品名称和价格

    我们使用=操作符的时候,会报一个错误



    我们应进行这样的修改

    将=操作符改为in,即

  • 除了使用in我们还可以使用any,all,exists

    另外我们需要查询商品表中前5条商品的id,商品名称以及上架时间

    要实现这个需求,我们首先要知道有ROWNUM这个内容


    知道了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并不存在

    文档

    Oracle数据库高级查询

    Oracle数据库高级查询:在一个SQL语句中嵌套另外一个sql语句称为子查询,而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个sql语句 在一个SQL语句中嵌套另外一个sql语句称为子查询 而这个查询语句作为另一个查询语句它的条件,其中包含其他sql语句的这个s
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top