MySQL-다중 테이블 쿼리-하위 쿼리(스칼라, 열)

하위 쿼리

  • 개요

    • 소개: SQL 문의 중첩된 선택 문은 하위 쿼리라고도 하는 중첩된 쿼리라고 합니다.
    • 形式: t1 에서 * 선택 ( 여기서 column1 = t2 에서 column1 선택 .....)
    • 하위 쿼리 외부 문은 삽입/업데이트/삭제/선택 중 하나일 수 있으며 가장 일반적인 것은 선택입니다.
  • 분류

    • 스칼라 하위 쿼리

      • 하위 쿼리에 의해 반환된 결과는 가장 단순한 형태의 단일 값(숫자, 문자열, 날짜 등)입니다.
        •  
      • 공통 기호: =, <>, >, >=, <, <=
      • 특정 데모 코드는 다음과 같습니다.
        • -- todo 子查询
          -- 标量子查询
          -- A.查询“教研部”的所有员工信息
          -- a.查询 教研部 的部门id
          select tb_dept.id
          from tb_dept
          where name = '教研部';
          -- b.再查询该部门id下的员工信息
          select *
          from tb_emp
          where dept_id = 2;
          -- 最终语句如下
          select *
          from tb_emp
          where dept_id = (select id from tb_dept where name = '教研部');
          -- select id from tb_dept where name = '教研部'   该语句属于子查询
          
          -- B.查询在“东方白”入职后的员工信息
          -- a.查询’东方白‘的入职时间
          select entrydate
          from tb_emp
          where name = '方东白';
          -- b.查询在方东白入职之后的员工信息
          select *
          from tb_emp
          where entrydate > '2012-11-01';
          -- 最终语句如下
          select *
          from tb_emp
          where entrydate > (select entrydate
                             from tb_emp
                             where name = '方东白')
          -- 子查询的语句
          # select entrydate
          # from tb_emp
          # where name = '方东白'
    • 열 쿼리

      • 하위 쿼리에서 반환된 결과는 열(여러 행일 수 있음),

        •  

      • 일반적으로 사용되는 기호: in, not in 등
      • 특정 데모 코드는 다음과 같습니다.
        • -- todo 列子查询
          -- A.查询’教研部‘和’咨询部‘员工的所有信息
          -- a.获取两部门的部门id
          select id
          from tb_dept
          where name = '教研部'
             or name = '咨询部';
          -- b.根据部门id,查询该部门下的员工id
          select *
          from tb_emp
          where dept_id in (2, 3);
          -- 合并后的查询语句
          select *
          from tb_emp
          where dept_id in (select id
                            from tb_dept
                            where name = '教研部'
                               or name = '咨询部');
    • 행 하위 쿼리

      • 하위 쿼리에서 반환된 결과는 하나의 행(여러 열일 수 있음)

        • 특정 데모 코드는 다음과 같습니다.

          • -- todo 行查询
            -- A.查询与‘韦一笑’的入职日期及职位都相同的员工信息
            -- a.查询‘韦一笑’ 的入职日期 及 职位
            select entrydate, job
            from tb_emp
            where name = '韦一笑';
            -- b.查询与‘韦一笑’的入职日期及职位相同的员工信息
            select *
            from tb_emp
            where entrydate = '2007-01-01'
              and job = 2;
            
            select *
            from tb_emp
            where (entrydate, job) = ('2007-01-01', 2);
            
            -- 合并查询语句
            select *
            from tb_emp
            where (entrydate, job) = (select entrydate, job
                                      from tb_emp
                                      where name = '韦一笑');
    • 테이블 하위 쿼리

      • 하위 쿼리에서 반환된 결과는 다중 행 및 다중 열이며 종종 임시 테이블로 사용됩니다.

        • 일반적으로 사용되는 연산자: in

          •  특정 작업 코드

          • -- todo 表子查询
            -- A.查询入职日期是’2006-01-01‘之后的员工信息,及部门名称
            -- a.查询入职日期为’2006-01-01‘之后的员工信息
            select *
            from tb_emp
            where entrydate > '2006-01-01';
            -- b.查询这部分员工信息及其部门名称
            select *
            from (select *
                  from tb_emp
                  where entrydate > '2006-01-01') e,
                 tb_dept d
            where e.dept_id = d.id;
            # select *
            # from tb_emp
            # where entrydate > '2006-01-01' 为子查询

             

Je suppose que tu aimes

Origine blog.csdn.net/weixin_64939936/article/details/131859596
conseillé
Classement