为了账号安全,请及时绑定邮箱和手机立即绑定
  • 忽然想起来有次面试问我如何用left join实现not in的功能 = = select A.内容,B.内容 from A left join B ON a.key=b.key where b.key is null
    查看全部
  • update user1 a inner join user2 b on a.user_name = b.user_name set a.over='齐天大圣'; 不是更好么,没必要这么麻烦吧。
    查看全部
    4 采集 收起 来源:使用join更新表

    2017-02-25

  • RIGHT OUTER JOIN:包含右表中的所有数据,当某个连接谓词不在左表中时,新生成的表的左表字段为NULL。对右表数据的信息进行扩展,增加左表中的字段,当某个连接谓词不在左表中时,新生成的表的左表字段为NULL。 使用RIGHT OUTER JOIN对NOT IN 进行优化。 SELECT select_sxpressions FROM TABLE A RIGHT OUTER JOIN TABLE B ON A.key=B.key WHERE A.key IS NULL; 表B中不包含表A中的数据。 SELECT select_sxpressions FROM TABLE A RIGHT OUTER JOIN TABLE B ON A.key=B.key WHERE A.key IS NOT NULL; 表A与表B的交集,相当于INNER JOIN。
    查看全部
  • 使用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,btimestr,b.kills having b.kills = max(c.kills);
    查看全部
  • 分类聚合,在查询多种分类数据时使用到一种聚合方式
    查看全部
  • @MySQL---SQL语句标准中JOIN的类型

    INNER JOIN:内连接【A,B表公共部分】
    LEFT [OUTER] JOIN:左外连接【左表完整】
    RIGHT [OUTER] JOIN:右外连接【右表完整】
    FULL JOIN:全连接【显示符合条件的所有信息】
    CROSS JOIN;交叉连接/笛卡尔连接【a表n行,b表m行,查到nm行】

    查看全部
  • 截图SQL语句解析: 这个sql语句有三层 第一层:select count(*) from user_kills b WHERE b.user_id = a.user_id and a.kills <= b.kills; 这个语句其实是这样的:select * from user_kills b,user_kills a WHERE b.user_id = a.user_id and a.kills <= b.kills,也就是两个user_kills表进行遍历, 结果是孙悟空、猪八戒、沙僧每个人击杀人数数量的一个标识,比如猪八戒击杀了10人,标识是3,那么代表猪八戒一天所击杀的人数中比10个人大或等于的有3天,依此类推。 第二层: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; 这层就是把孙悟空、猪八戒、沙僧每个人所击杀的不同的人数以及每个人数的标识都列出来,比如,孙悟空在2018-02-24这天杀了30人,标识是1代表这天杀的人是最多的。 第三层也就是截图的语句了,这个语句就是把user1表和第二层所得出的表用inner join进行查询,选出cnt<=2也就是排在前两位的数据。 这个sql语句其实也是不严谨的,比如如果猪八戒只有3天击杀数据,而其中两天的击杀数据一样,这个时候只会筛选出一条数据,因为相同击杀数据标识cnt等于4.
    查看全部
  • DDL:数据定义语言 --- CREATE、ALTER、DROP、TRUNCATE TPL:事务处理语言 --- COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION DCL:数据控制语言 --- GRANT、REVOKE DML:数据操作语言 --- SELECT、UPDATE、INSERT、DELETE
    查看全部
    3 采集 收起 来源:SQL语句分类

    2016-08-10

  • join优化子查询技巧: 一般子查询写法:(数据小时,没有多大影响,如果数据量大时,则要消耗大量的查询) select a.user_name , a.voer , (select over from user2 where a.user_name = b,user_name) as over2 from user1 a; 如果这两张表的记录相当多 那么这个子查询相当于对A标的每一条记录都要进行一次子查询。 join优化(左连接)后的写法: select a.user_name , a.over , b.over from user1 a left join user2 b on a.user_name = b.user_name
    查看全部
  • 笔记
    查看全部
    2 采集 收起 来源:使用join更新表

    2015-10-28

  • 分类聚合方式查询每一个用户某一个字段数据最大的两条数据: 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 中 不会支持 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
    查看全部
  • nice
    查看全部
  • 这里有点小纰漏,union all把左右连接合一起并不是full join,因为union all没有去除重复元素,应该使用union
    查看全部
  • iOS关闭
    查看全部
    2 采集 收起 来源:SQL发展历程

    2015-05-22

首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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