按关键词阅读: 进阶 MySQL
文章图片
文章图片
当一个查询是另一个查询的条件时 , 称之为子查询 。 SQL 还允许创建子查询(subquery) , 即嵌套在其他查询中的查询 。
1.子查询的sql语句
订单存储在两个表中 。 每个订单包含订单编号、客户 ID、订单日期 , 在 Orders 表中存储为一行 。 各订单的物品存储在相关的OrderItems 表中 。 Orders 表不存储顾客信息 , 只存储顾客 ID 。 顾客的实际信息存储在 Customers 表中 。
现在 , 假如需要列出订购物品 RGAN01 的所有顾客 , 应该怎样检索?下面列出具体的步骤 。
1)通常的做法是这样的:
2)子查询的sql语句就可以将两者合并查询:
2.子查询的类型
子查询语句一般出现在where和having子句中
1)带IN关键字的子查询
2)使用子查询进行比较查询
3.子查询可以出现在哪里1)select (select …) as 别名 from table
第一种 , 在from前面的(select)子查询 。 这种子查询的结果只能是单行单列的 , 可以传递from后面表的参数进去 , 表示查询出来的每一行数据都是由这个查询当做一列的 。
2)select * from (select * …) table
第二种 , 在from后面 , 这种子查询会当做一个表来对待 , 可以有多行多列 , 行列没有强制要求 , 还可以与别的表连接查询 , 有一个强制要求 , 就是必须要写别名 。 不可以传递参数 。
3)select * from table where table.id = (select tab.id from tab.id)
【进阶|涨知识!MySQL高级进阶之子查询是什么?】第三种 , 在= , > , < , >= , <= , <> , !=关系运算符后面 , 这种子查询的结果只能是单行单列 , 与关系判断符前面的数据对比 。 可以传递参数 。
稿源:(Python教程初学详解)
【傻大方】网址:http://www.shadafang.com/c/111395952R021.html
标题:进阶|涨知识!MySQL高级进阶之子查询是什么?