MYSQL 子查询及多表连接

子查询:是指出现在其他SQL语句内的SELECT字句。嵌套在查询内部,且必须始终出现在圆括号内

  比如 SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);

   其中 SELECT * FROM t1,称为外层查询,SELECT col2 FROM t2,称为子查询(SubQuery)

 由于数据查询的话可能会有多个查询结果,数据库无法得知,因此要要关键字来修饰:【Not】In

如 SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price  In (SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本');

   注意:子查询里面只能查询一个东西,不能查询多个,因为外面接收的只能接收一个。

 

 其中:In相当于any、some,如果运算符为>或者>=,表示大于子查询结果中的最小值

    运算符为<或<=,使用In关键字时,表示小于子查询结果中的最大值;

  运算符为>或>=,使用Not In关键字时,表示大于子查询结果中的最大值

  运算符为<或<=,使用Not In关键字时,表示小于子查询结果中的最小值

 

     多表更新
update 表名称1 连接方式 表名称2 on 条件1 set 条件2;

多表连接方式

内连接:inner join  使用条件:比如a^b a和b相交的数据 这个用得比较多

左连接:left join    使用条件:A的全部数据以及A和B相交的数据
右连接:right join  使用条件:B的全部数据以及A和B相交的数据

比如  查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果

 SELECT student.Sname,sc.Cno,sc.Grade FROM sc INNER JOIN student ON sc.Sno=student.Sno WHERE sc.Grade>80 ORDER BY sc.Grade DESC;

            标红的这2个表名可以随意调换的,没有限制。     在属性值加上表名即可

多表连接可以有多个条件语句,但是要用AND进行连接

SELECT student.Sname,student.Ssex,sc.Grade FROM student INNER JOIN sc ON student.Sno=sc.Sno WHERE student.Ssex='男' AND sc.Cno=(SELECT Cno FROM course WHERE Cname='数据库基础') AND student.Sdept='计算机系' ;

 

 

   多表删除:delect 表名称的别名 from 表名称 as 别名 【where 条件语句】 可以加入子查询

转载于:https://www.cnblogs.com/zengjiao/p/6831702.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值