为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
MySQL开发技巧(一)_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL开发技巧(一)

sqlercn 数据库工程师
难度中级
时长58分
  • 四种类型
    查看全部
    0 采集 收起 来源:SQL语句分类

    2016-06-12

  • sql:结构化查询语言
    查看全部
    0 采集 收起 来源:SQL发展历程

    2016-06-12

  • John从句得类型: (1)内链接( INNER ) (2)全外连接( FULL OUTER ) (3)左外连接( LEFT OUTER ) (4)右外连接( RIGHT OUTER ) (5)交叉链接( CROSS )
    查看全部
  • sql语句的使用的作用
    查看全部
    0 采集 收起 来源:SQL语句分类

    2016-06-08

  • 看到join从句左外连接
    查看全部
  • 分类聚合方式查询每一个用户某一个字段数据最大的两条数据: select d.user_name ,c.ctimestr,kills from (select user_id ,timestr ,kills ,( select count(*) from user_kills b where b.user_id = a.user_id and a.kills <= b.kills) as cnt from user_kills a group by user_id,timestr,kills) c join user1 d on c.user_id = d.id where cnt <= 2
    查看全部
  • MySQL 使用join优化聚合子查询: user1表 ---------------------------------- - id ---- user_name --- over ----- ---------------------------------- user_kills表 --------------------------------------- - id -- user_id -- kills -- timestr---- --------------------------------------- 问题:如何查询出四人组中打怪最多的日期? 一般思路:聚合子查询 select a.user_name , b.timestr , b.kills from user1 a join user_kills b on a.id = b.user_id where b.kills = (select MAX(c.kills) from user_kills c where c.user_id = b.user_id) 使用join + having优化聚合子查询 select a.user_name , b.timestr , b.kills from user1 a join user_kills b on a.id = b.user_id join user_kills c on c.user_id = b.user_id group by a.user_name , b.timestr , b.kills having b.kills = MAX(c.kills)
    查看全部
  • 低效的子查询 select a.user_name,a.over,(select over from user2 b where a.user_name=b.user_name) as over2 from user1 a; 使用join优化后的子查询: select a.user_name,a.over,b.over as over2 from user1 a left join user2 b on a.user_name=b.user_name;
    查看全部
  • MySQL 联合更新技巧: 如题:将user1表中user_name与user2表中user_name相同的user1表的over替换成user2表中的over值? 一般正常思路: update user1 set over='齐天大圣' where user1.user_name in( select b.user_name from user1 a join user2 b on a.user_name = b.user_name); 这样去执行思路上是对的,但是MySQL不支持这种机制 解决方法: update user1 a join ( select b.user_name from user1 a join user2 b on a.user_name = b.user_name ) b on a.user_name = b.user_name set a.over='齐天大圣'
    查看全部
    0 采集 收起 来源:使用join更新表

    2016-06-05

  • 发展分类
    查看全部
    0 采集 收起 来源:SQL发展历程

    2016-05-25

  • 分类聚合方式查询每一个用户某一个字段数据最大的两条数据: select d.user_name ,c.ctimestr,kills from (select user_id ,timestr ,kills ,( select count(*) from user_kills b where b.user_id = a.user_id and a.kills <= b.kills) as cnt from user_kills a group by user_id,timestr,kills) c join user1 d on c.user_id = d.id where cnt <= 2
    查看全部
  • update user1 set over=‘齐天大圣’ where user1.user_name in ( select b.user_name from user1 a join user2 b on a.user_name = b.user_name); ERROR 1093错误 不能更新from语句中出现的表字段 解决办法: 通过使用join进行联合更新 update user1 a join (select b.user_name from user1 a join user2 b on a.user_name = b.user_name) b on a.user_name = b.user_name set a.over=‘齐天大圣’;
    查看全部
    0 采集 收起 来源:使用join更新表

    2016-05-17

  • 交叉连接(笛卡尔积连接):A*B,其实就是将两个表进行相乘,一般项目中很少用到笛卡尔积连接 select * from user1 a cross join user2 b; 如上语句:如果user1表中有3条记录,user2中有4条记录,则结果就有12条记录
    查看全部
  • MySQL 中 不会支持 full join 解决方法:采用左连接和右连接结合+ union all 方法来取得两表的合集 select a.user_name , a.over , b.over <-这里是指所选择显示的项 from user1 a left join user2 b on a.user_name = b.user_name <-这里是指筛选条件 union all <-连接反向查询语句 select b.user_name , b.over, a.over <-这里是指所选择显示的项 from user1 a right join user2 b on a.user_name = b.user_name <-这里是指筛选条件
    查看全部
  • 121
    查看全部

举报

0/150
提交
取消
课程须知
本门教程主要针对的是MySQL数据库,熟悉数据库的CRUD操作是掌握本门教程精华的必要条件。
老师告诉你能学到什么?
1、如何正确的使用join语句 2、如何实现分组选择数据
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!