하위 쿼리
-
개요
- 소개: 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' 为子查询
-
-
-