博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.使用子查询 ---SQL
阅读量:7254 次
发布时间:2019-06-29

本文共 833 字,大约阅读时间需要 2 分钟。

利用子查询进行过滤


 普通查询:

SELECT order_numFROM OrderItemsWHERE prod_id = 'RGAN01';
输出▼order_num-----------2000720008

现在,我们知道了哪个订单包含要检索的物品,下一步查询与订单20007和20008相关的顾客ID。

SELECT cust_idFROM OrdersWHERE order_num IN (20007,20008);
输出▼cust_id----------10000000041000000005

 

利用子查询:

SELECT cust_idFROM OrdersWHERE order_num IN ( SELECT order_numFROM OrderItemsWHERE prod_id = 'RGAN01' );
输出▼cust_id----------10000000041000000005

分析▼

在SELECT语句中,子查询总是从内向外处理。在处理上面的SELECT语句时,DBMS实际上执行了两个操作。
首先,它执行下面的查询:

SELECT order_num FROM orderitems WHERE prod_id='RGAN01'

此查询返回两个订单号:20007和20008。然后,这两个值以IN操作符要求的逗号分隔的格式传递给外部查询的WHERE子句。外部查询变成:

SELECT cust_id FROM orders WHERE order_num IN (20007,20008)

可以看到,输出是正确的,与前面硬编码WHERE子句所返回的值相同。

提示:格式化SQL
包含子查询的SELECT语句难以阅读和调试,它们在较为复杂时更是如此。如上所示,把子查询分解为多行并进行适当的缩进,能极大地简
化子查询的使用。

 

转载于:https://www.cnblogs.com/lbonet/p/7495096.html

你可能感兴趣的文章
ECMAScript面向对象(二)——之创建对象方法总结
查看>>
面试题6--利用前序和中序遍历重构二叉树--递归方法
查看>>
Oracle的SQL
查看>>
步步为营:Asp.Net客户端存Cookie服务端取
查看>>
git实践:对比svn
查看>>
1 管理入门
查看>>
C#递归遍历指定目录下的所有文件(包括子目录下的文件)
查看>>
SpringMVC的工作流程
查看>>
JS比较好用的一些方法搜集
查看>>
Codeforces 459E
查看>>
Android数据库--Sqlcipher的使用(二)
查看>>
第三十九课:requestAnimationFrame详解
查看>>
6.10 时间和日期例程
查看>>
Chess
查看>>
React Native导航器之react-navigation使用
查看>>
百度2016笔试题第一题:页面请求失败值
查看>>
实现网站图片瀑布流重点记录
查看>>
软件测试全职以及兼职平台以及薪酬报价
查看>>
Javascript:日期排班功能实现
查看>>
git push之后回滚(撤销)代码
查看>>