精华内容
下载资源
问答
  • 联合查询

    2021-03-03 21:10:54
    文章目录进阶9:联合查询 进阶9:联合查询 union 联合/合并:将多条查询语句的结果合并称一个结果 语法: 查询语句1 union 查询语句2 union …… 应用场景: 要查询的结果来自于多个表,且多个表没有直接的连接关系...

    进阶9:联合查询

    union 联合/合并:将多条查询语句的结果合并称一个结果
    语法:

    查询语句1
    union
    查询语句2
    union
    ……
    

    应用场景:

    要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时
    

    特点:

    1. 要求多条查询语句的查询列数是一致的
    2. 要求多条查询语句的查询的每一列的类型和顺序最好一致
    3. UNION关键字默认去重,如果使用UNION ALL可以包含重复项

    案例:查询部门编号>90或邮箱包含a的员工信息

    #方法1
    SELECT 
      * 
    FROM
      employees 
    WHERE email LIKE '%a%' 
      OR department_id > 90 ;
    
    #用union
    SELECT * FROM employees WHERE email LIKE '%a%'
    UNION
    SELECT * FROM employees WHERE department_id > 90 ;
    

    结果:
    在这里插入图片描述

    展开全文
  • SQL语言查询基础:连接查询 联合查询 代码
  • 【MySQL】多表联合查询、连接查询、子查询

    万次阅读 多人点赞 2019-06-03 17:08:20
    文章目录 【1】连接查询 内连接查询 外连接查询 左连接 右连接 【2】联合查询 【3】子查询 带in关键字的子查询 带比较运算符的子查询 带exists的子查询 带any关键字的子查询 带all关键字的子查询 【1】连接查询 连接...

    【1】连接查询

    连接查询的意义: 在用户查看数据的时候,需要显示的数据来自多张表.

    内连接查询

    内连接查询是最常见的连接查询,内连接查询可以查询两张或两张以上的表

    内连接:[inner] join:从左表中取出每一条记录,去右表中与所有的记录进行匹配: 匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留.

    基本语法:左表 [inner] join 右表 on 左表.字段 = 右表.字段;
    on表示连接条件: 条件字段就是代表相同的业务含义(如my_student.c_id和my_class.id)

    当两个表中存在相同意义的字段的时候,就可以通过该字段来连接查询这两个表,当该字段的值相同时就可以查出该记录。

    内连接可以没有连接条件: 没有on之后的内容,这个时候系统会保留所有结果。

    例:

    select a.id,a.name,a.sex,b.country,b.city,b.street 
    from student a 
    join addr b 
    on a.addrid=b.addrid;
    

    在这里插入图片描述

    外连接查询

    以某张表为主,取出里面的所有记录, 然后每条与另外一张表进行连接: 不管能不能匹配上条件,最终都会保留: 能匹配,正确保留; 不能匹配,其他表的字段都置空NULL。

    左连接

    left join: 左外连接(左连接), 以左表为主表
    基本语法: from 左表 left join 右表 on 左表.字段 = 右表.字段;

    左表不管能不能匹配上条件,最终都会保留:能匹配,正确的保留; 若不能匹配,右表的字段都置NULL。

    例:

    select a.id,a.name,a.addrid,b.country,b.city
    from student a left join addr b
    on a.addrid=b.addrid;
    

    在这里插入图片描述

    右连接

    right join: 右外连接(右连接), 以右表为主表
    基本语法: from 左表 right join 右表 on 左表.字段 = 右表.字段;
    右表不管能不能匹配上条件,最终都会保留:能匹配,正确的保留; 若不能匹配,左表的字段都置NULL。

    例:

    select a.id,a.name,a.addrid,b.country,b.city
    from student a right join addr b
    on a.addrid=b.addrid;
    

    在这里插入图片描述

    【2】联合查询

    联合查询
    联合查询结果是将多个select语句的查询结果合并到一块因为在某种情况下需要将几个select语句查询的结果合并起来显示。比如现在需要查询两个公司的所有员工的信息,这就需要从甲公司查询所有员工信息,再从乙公司查询所有的员工信息,然后将两次的查询结果进行合并。
    可以使用unionunion all关键字进行操作

    语法格式如下:

    select 语句1
    union[union 选项]
    select 语句2
    union|[union 选项]
    select 语句n
    

    其中union选项有两个选项可选
    all:表示无论重复都输出
    distinct: 去重(整个重复)(默认的)

    select *from addr
    union all
    select *from addr;
    

    在这里插入图片描述

    select id,addrid 
    from addr 
    union all 
    select id,addrid 
    from student;
    

    在这里插入图片描述联合查询只要求字段一样, 跟数据类型和顺序无关

    select id,addrid,sex,score 
    from student 
    union all 
    select sex,addrid,id,score 
    from student;
    

    在这里插入图片描述
    联合查询的意义:

    1. 查询同一张表,但是需求不同 如查询学生信息, 男生身高升序, 女生身高降序
    2. 多表查询: 多张表的结构是完全一样的,保存的数据(结构)也是一样的.

    联合查询order by的使用
    在联合查询中: order by不能直接使用(不能出现两次),需要对查询语句使用括号才行;

    select *from student 
    where sex="woman" 
    order by score
    union
    select *from 
    student where sex="man" 
    order by score;
    

    这种情况是会报错的。因为语句中不允许出现两个order by。

    select *from student where sex="woman" 
    union
    select *from student where sex="man" order by score;
    

    如果是上边这样只出现一次他的意义就是等合并完成之后再进行排序就没有任何意义了,因为又把前边sex分好的类打乱了

    (select *from student 
    where sex="woman" 
    order by score )
    union
    (select *from 
    student where sex="man" 
    order by score;)
    

    这种方式的目的是为了让两个结果集先分别order by,然后再对两个结果集进行union。但是你会发现这种方式虽然不报错了,但是两个order by并没有产生最后的效果,所以应该改成如下:

    select *from
    (select *from student 
    where sex="woman" 
    order by score)student
    union
    select *from
    (select *from student 
    where sex="man" 
    order by score)student ;
    

    也就是说,order by不能直接出现在union的子句中,但是可以出现在子句的子句中。
    在这里插入图片描述

    【3】子查询

    通常我们在查询的SQL中嵌套查询,称为子查询。子查询通常会使复杂的查询变得简单,但是相关的子查询要对基础表的每一条数据都进行子查询的动作,所以当表单中数据过大时,一定要慎重选择

    带in关键字的子查询

    使用in关键字可以将原表中特定列的值与子查询返回的结果集中的值进行比较
    如果某行的特定列的值存在,则在select语句的查询结果中就包含这一行。

    例:查询成绩大于80的学生的所有信息,
    先在子查询中查出成绩大于80的结果集,然后将原成绩表中的成绩与结果集进行比较,如果存在,就输出这条学生的记录。

    select *
    from student 
    where score in
    (select score from student where score>80);
    

    在这里插入图片描述

    带比较运算符的子查询

    如果可以确认子查询返回的结果只包含一个单值,那么可以直接使用比较运算符连接子查询。
    经常使用的比较运算符包括等于(=)、不等于(<>或!=)、小于(<)、大于(>)、小于等于(<=)和大于等于(>=)。

    select *
    from student 
    where score> 
    (select score 
    from scholarship
    where dengji=1);
    

    查询奖学金等级为1的学生信息

    带exists的子查询

    exists: 是否存在的意思, exists子查询就是用来判断某些条件是否满足(跨表),
    exists是接在where之后
    exists返回的结果只有0和1.

    例:如果存在成绩大于90的人则列出整个表的记录

    select *
    from student 
    where exists
    (select *from student where score>90);
    

    在这里插入图片描述

    带any关键字的子查询

    any关键字表示满足其中的任意一个条件使用any关键字时,只要满足内层查询语句结果的的任意一个,就可以通过该条件来执行外层查询语句。

    select *
    from student 
    where addrid<any
    (select addrid 
    from addr);
    

    在这里插入图片描述

    带all关键字的子查询

    all和any刚好是相反的,all关键字表示满足所有结果使用all关键字,要满足内层查询语句的所有结果,才可以通过该条件来执行外层查询语句。

    select *
    from student 
    where addrid>all
    (select addrid 
    from addr);
    

    在这里插入图片描述

    展开全文
  • 织梦条件联合查询

    2018-11-04 11:56:17
    织梦的多条件联合查询,例如京东的条件查询,以当前关键字的联合查询
  • MYSQL 联合查询

    2020-12-03 09:16:45
    mysql的联合查询 本节课重点 1.概念:union,是指将多个查询结果合并成一个结果显示。 2. 联合查询是针对查询结果的合并(多条select语句合并) 3.联合查询语法: select 查询【决定字段名字】 union 查询选项 select...

    mysql的联合查询

    本节课重点
    1.概念:union,是指将多个查询结果合并成一个结果显示。
    2. 联合查询是针对查询结果的合并(多条select语句合并)
    3.联合查询语法:
    select 查询【决定字段名字】
    union 查询选项
    select 查询

    4.联合查询要求:联合查询是结果联合显示
    .多个联合查询的字段结果数量一致
    .联合查询的字段来源于第一个查询语句的字段
    5.查询选项:与select选项类似
    .all:保留所有记录
    .distinct:保留去重记录(默认)
    6.步骤
    1.确定要进行多个表数据的联合操作
    .表结构一致
    .数据汇总
    2.确定数据的要求:全部保留or去重
    3.使用联合查询
    7.演示案列
    .使用联合查询将两张表的数据拼接到一起显示

       select * from studentinfo union select * from studentinfo_01
    
       .联合查询选项默认是distinct
       select * from studentinfo union all select * from studentinfo_01
       .联合查询不要求字段类型一致,只对数量的要求一致,而且字段与第一条查询语句相关(注意:如果数据不能对应,那么查询没有意义)
       
       select sname from studentinfo union all select age from studentinfo_01
       .
       如果使用where对数据进行筛选,where针对的是select指令,而不是针对union结果
       
        select * from studentinfo union select * from studentinfo_01 where sgender='男';
    

    知识小结
    1.union是负责将多次查询的结果统一拼凑显示
    .记录数增加
    .字段数不变(第一条sql指令决定)
    union常用方式
    .因为数据量大分表存储,然后统一查看或者统计
    .根据不同维度对数据进行筛选,然后统一查看或者统计
    .uoion默认是去重的,想要保留全部查询结果,需要使用union all

    展开全文
  • 16 联合查询

    2021-02-01 12:07:14
    联合查询 将多条查询语句的结果合并成一个结果 语法: 查询语句1 UNION 查询语句2 UNION ... 应用场景:当要查询的结果来自多个表,且之间没有连接关系,就可以用联合查询 案例1:

    联合查询

    将多条查询语句的结果合并成一个结果

    语法:

    查询语句1
    UNION
    查询语句2
    UNION
    ...
    

    应用场景:当要查询的结果来自多个表,且之间没有连接关系,就可以用联合查询

    案例1:查询部门编号>90或邮箱中包含a的员工信息

    SELECT * FROM employees WHERE department_id > 90
    UNION
    SELECT * FROM employees WHERE email LIKE "%a%";
    

    案例2:查询中国用户中男性的用户信息以及外国用户男性的信息

    SELECT * FROM t_ca WHERE sex = "男"
    UNION
    SELECT * FROM t_ua WHERE sex = "male"
    

    注意事项:

    • 要求多条查询语句的查询列数是一致的
    • 字段的含义(包括字段的数据类型)也要对应起来
    • 列名取第一条SELECT语句的列名
    • 会自动去重,除非使用UNION ALL关键字
    展开全文
  • 主要介绍了mysql连接查询、联合查询、子查询原理与用法,结合实例形式详细分析了mysql连接查询、联合查询、子查询的基本概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下
  • SQL语法(五) 多表联合查询

    万次阅读 多人点赞 2018-09-09 09:00:01
    当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99) 范例 1.笛卡儿积 将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有表的数量的乘积。 --...
  • mysql联合查询

    2020-12-05 12:43:11
    UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联 合查询。 UNION的语法格式为: 复制内容到剪贴板 代码:select_statement ...联合查询时,查询结果的列标
  • select查询之联合查询

    2020-08-02 14:21:25
    联合查询 union 联合 合并:将多条查询语句的结果合并成一个结果 查询语句1 union 查询语句2 union … 特点 1.要求多条查询语句的查询列数是一致的 2.要求多条查询语句的所查询的每一列的类型和顺序最好一致 3....
  • PostgreSQL联合查询

    2021-03-10 09:28:49
    多表联合查询 UPDATE contract_contract_file SET create_user_name = C.undertake_user_name, create_user_account = C.undertake_user_account FROM contract_contract AS C WHERE contract_id = C.ID ...
  • SQL联合查询

    2019-04-21 22:01:56
     联合查询效率较高,举例子来说明联合查询:内联inner join 、左联left outer join 、右联right outer join 、全联full outer join 的好处及用法。  联合查询效率较高,以下例子来说明联合查询(内联、左联、右联...
  • MySQL联合查询

    2020-03-10 16:10:50
    MySQL联合查询 UNION 联合、合并:将多条查询语句的结果合并成一个结果 每个查询都是一个独立查询语句,然后通过union连接到一起,变成了一个结果 语法: 查询语句1 UNION 查询语句2 UNION … 应用场景:查询的结果...
  • sql联合查询

    千次阅读 2018-12-17 09:52:09
    联合查询效率较高,举例子来说明联合查询:内联inner join 、左联left outer join 、右联right outer join 、全联full outer join 的好处及用法。 联合查询效率较高,以下例子来说明联合查询(内联、左联、右联、全...
  • Mysql联合查询

    2020-01-10 16:01:42
    联合查询 union联合,合并:将多条查询语句的结果合并为一个结果 语法 查询语句1 UNION 查询语句2 应用场景 要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时。 特点 要求多条...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,368
精华内容 5,747
关键字:

联合查询