`

mysql inner和union的用法及 union与unionall的区别

阅读更多

  如 A ,B表
  A中字段为 (Aid,username ,address);
  B中字段为 (Bid,Aid,ObjType,name);

  其中ObjType 中字段值为 S时候 表示发表,为 D 则为下载

     如果只查询 S(发表)过的东西:
      select A.*,count(Bid) from A join B on A.Aid=B.Aid where ObjType='S';


  这其中:假如只有A join B,后面没跟on 限制条件的话,则会生成一个n*n的临时表,就好像,where A,B 一样
  加上On 限制条件 只查询条件相同的结果集

如果想把 发表过和 下载过的 结果全部查出来的话,则考虑使用 union咯

   select A.username,count(Bid) as S,0 as D from A join B on A.Aid=B.Aid where ObjType='S'
   union
   select A.username,0 as S,count(Bid) as D from A join B on A.Aid=B.Aid where ObjType='D'
 
   结果就为:
         username  S  D
           AA     2  0
           AB     3  0
           AA     0  3
           AB     0  5  


  这样就把记录合并起来咯,但是AA的 S记录没有喝 D记录 放在同一行中

    然后 在来一次查询
   select t.username,sum(t.S) as S sum(t.D)as D from (
         select A.username,count(Bid) as S,0 as D from A join B on A.Aid=B.Aid where ObjType='S'
   union
   select A.username,0 as S,count(Bid) as D from A join B on A.Aid=B.Aid where ObjType='D' ) as t group by username;
 结果就为:
         username  S  D
           AA     2  3
           AB     3  5        


其实用不考虑重复记录的话 用union all 速度会比 union 快一些

union :这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
    而union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

使用 union 组合查询的结果集有两个最基本的规则:

1。所有查询中的列数和列的顺序必须相同。

2。数据类型必须兼容


2
2
分享到:
评论

相关推荐

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MYSQL常用命令大全

    MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    MySQL中是使用SELECT语句来查询数据的。在这一章中将讲解的内容包括。 1、查询语句的基本语法 2、在单表上查询数据 3、使用聚合函数查询数据 4、多表上联合查询 5、子查询 6、合并查询结果 7、为表和字段取别名 8、...

    浅谈mysql中多表不关联查询的实现方法

    大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join)、右联结(right join)、内联结(inner join)、外联结(outer join)。这种都是两个表之间有一定关联,也就是...

    SQL语句生成及分析器

    联合(Union,Union All,Minus,Intersect) 4、SQL语句反向分析 无论多么复杂的语句,都能分析出来(包括SQL各子句中嵌套的SQL语句) 5、数据库视图定义和重建 6、支持将SQL查询语句,替换为插入(Insert into)和更新...

    Java面试宝典2020修订版V1.0.1.doc

    15、union和union all有什么不同? 45 16、char、varchar2、varchar有什么区别? 45 17、Oracle和Mysql的区别? 46 18、Oracle语句有多少类型 46 19、oracle分页语句 47 20、从数据库中随机取50条 47 21、order by与...

    基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程.txt

    ├─(37) union all的学习代码.sql ├─(38) 外关联介绍.sql ├─(39) 示例数Ju.sql ├─(40) 示例数Ju.txt ├─(41) 示例表.xlsx ├─(42) 笛卡尔积的知识介绍.sql (10)\SQL课程素材软件下载\SQL素材下载\第...

    Sql 语句详解

    20. SQL UNION 和 UNION ALL 操作符 26 21. SQL SELECT INTO 语句 28 22. SQL CREATE DATABASE 语句 29 23. SQL CREATE TABLE 语句 29 24. SQL 约束 (Constraints) 30 25. SQL NOT NULL 约束 31 ……

    程序员的SQL金典6-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典7-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典4-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典3-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典.rar

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    SQL语句生成及分析器(中文绿色)

    3.8 联合 (Union [All],Minus,Intersect) 3.9 字段别名,数据表别名 3.10 SQL子查询表,内嵌SQL子句 4、粘贴字段、系统函数 5、SQL查询语句反向分析, 无论多么复杂的语句,都能分析得出来 包括上面提到...

    sql语句生成与分析器.rar

    3.8 联合 (Union [All],Minus,Intersect) 3.9 字段别名,数据表别名 3.10 SQL子查询表,内嵌SQL子句 4、粘贴字段、系统函数 5、SQL查询语句反向分析, 无论多么复杂的语句,都能分析得出来 包括上面提到...

    经典全面的SQL语句大全

     9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)  10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 where not exists ( select *...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    mssql 微软 只能能运行在windows平台,体积比较庞大,占用许多系统资源, 但使用很方便,支持命令和图形化管理,收费。 中型企业 Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,...

Global site tag (gtag.js) - Google Analytics