MYSQL中一些疑问
博客专区 > Haver 的博客 > 博客详情
MYSQL中一些疑问
Haver 发表于1年前
MYSQL中一些疑问
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

having&where区别:

     having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写

                    where针对表中的列发挥作用,查询数据

                    having对查询结果中的列发挥作用,筛选数据

                    #查询本店商品价格比市场价低多少钱,输出低200元以上的商品

                    select goods_id,good_name,market_price - shop_price as s from goods having s>200 ;

                    //这里不能用where因为s是查询结果,而where只能对表中的字段名筛选

                    如果用where的话则是:

                    select goods_id,goods_name from goods where market_price - shop_price > 200;

mysql子查询:

        1、where型子查询

                (把内层查询结果当作外层查询的比较条件)

                #不用order by 来查询最新的商品

                select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);

                #取出每个栏目下最新的产品(goods_id唯一)

                select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);

 

        2、from型子查询

                (把内层的查询结果供外层再次查询)

                #用子查询查出挂科两门及以上的同学的平均成绩

                    思路:

                        #先查出哪些同学挂科两门以上

                        select name,count(*) as gk from stu where score < 60 having gk >=2;

                        #以上查询结果,我们只要名字就可以了,所以再取一次名字

                        select name from (select name,count(*) as gk from stu having gk >=2) as t;

                        #找出这些同学了,那么再计算他们的平均分

                        select name,avg(score) from stu where name in (select name from (select name,count(*) as gk from stu having gk >=2) as t) group by name;

 

        3、exists型子查询

                (把外层查询结果拿到内层,看内层的查询是否成立)

                #查询哪些栏目下有商品,栏目表category,商品表goods

                    select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);

 

 

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 29
码字总数 5689
×
Haver
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: