时间:2021-07-01 10:21:17 帮助过:16人阅读
子查询就是在原有的查询语句中嵌入新的查询
子查询分类
1、where型子查询
2、from型子查询
3、exists型子查询
三种子查询的详细说明
1、where型子查询
where型子查询:把内层的sql语句的查询结果作为外层的sql查询的条件
# 语法 select 查询项 from 表名 where 列名=(select 查询项 from 表名)--内层sql语句查询结果唯一 where 列名 in(select 查询项 from 表名)--内层sql语句查询有一个以上的结果 # 示例 # 查询每个栏目下价格最贵的商品 select goods_id,cat_id,shop_price,goods_name from goods where shop_price in (select max(shop_price) from goods group by cat_id);
2、from型子查询
from型子查询:把内层的sql语句的查询结果作为临时表供外层sql语句再次查询
# 语法 select 查询项 from (select 查询项 from 表名 选择表达式) 选择表达式 # 示例 # 查询每个栏目下goods_id最大的商品 select * from( select goods_id,cat_id,shop_price,goods_name from goods order by goods_id desc,cat_id asc)as tmp group by cat_id;
3、exists型子查询
exitst型子查询:把外层sql查询到的行带入内层sql查询,要使内层查询成立
# 语法 select 查询项 from 表名 where exists(select 查询项 from 表名 where 选择表达式) #示例 #把有商品的栏目查询出来 select cat_id,cat_name from category where exists(select * from goods where goods.cat_id=category.cat_id);
由于mysql版本的变化,语法可能存在一定的变化,欢迎指出错误和评论区讨论
mysql--浅谈子查询1
标签:code where 结果 sel sts style 概念 依赖 desc