700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MySQL-14使用子查询-必知必会

MySQL-14使用子查询-必知必会

时间:2019-10-28 06:43:53

相关推荐

MySQL-14使用子查询-必知必会

之前的学习的所有SELECT语句都是简单查询,只从单个数据库表中检索数据的单条语句,SQL还允许建立子查询:嵌套在其他查询中的查询

举例:表orderitems只存储客户的ID和物品信息。实际的客户信息存储在customers表中

​ 现在需要查询订购物品TNT2的所有客户

1、在orderitems表中检索出含物品TNT2的所有订单的编号

2、检索具有步骤1的订单编号的所有客户的ID

3、检索步骤2返回的所有客户ID的客户信息

1、对prod_id为TNT2的所有订单,检索其order_num列,得出相应的订单号为200005和200007SELECT order_num FROM orderitems WHERE prod_id = 'TNT2';2、查询具有订单200005和200007两个订单的ID为10001和10004SELECT cust_id FROM orders WHERE order_num IN (200005,200007);3、检索这些ID的客户信息SELECT cust_name,cust_contact FROM customers WHERE cust_id IN (10001,10004);

​ 把第一个查询变成子查询,组合以上两个查询,在SELECT语句中,子查询从内向外处理

SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2');

​ 把以上组合变为子查询,和第三次进行组合

SELECT cust_name,cust_contact FROM customers WHERE(SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'));

使用相关子查询时注意使用完全限定名,在不同表中区分

例:显示costomers表中每个客户的订单总数,订单和相应的客户ID存储在orders表中1、从customers表中检索客户列表2、对检索出的每个用户,使用COUNT()统计在orders表中的订单数目SELECT cust_name,cust_status,(SELECT COUNT(*) FROM orders WHERE orders.id = customers.id) AS ordersFROM customers ORDER BY cust_name;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。