다른 문에 나타나는 Select 문을 하위 쿼리 또는 내부 쿼리라고 하며, 외부 쿼리 문을 기본 쿼리 또는 외부 쿼리라고 합니다.
-- 子查询 -- 查询的条件来自于另一查询的结果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')
물론 하위 쿼리에도 유형이 있는데, 이는 다음과 같은 유형으로 나뉩니다.
스칼라 하위 쿼리(결과 집합에는 하나의 행과 하나의 열만 있음)
column 하위 쿼리(결과 집합에는 하나의 열과 여러 행만 있음)
row 하위 쿼리(결과 집합에는 하나의 행과 여러 열이 있음)(적음) )
테이블 하위 쿼리(결과 세트는 일반적으로 다중 행 및 다중 열입니다)
여기서 새 t_user 테이블을 예로 들어 보겠습니다.
여기서의 분류는 다음을 기반으로 합니다. 위 sql과 같은 임베디드 서브쿼리의 결과에 대해 서술문은 스칼라 서브쿼리입니다
서브쿼리 결과는 행과 열이 각각 1개뿐입니다
그럼 SQL에서 서브쿼리의 위치를 기준으로 논의하겠습니다. 명령문:
선택 후: 스칼라 하위 쿼리만 지원됩니다
-- select语句后面,将t1查询出的结果作为子查询的条件 SELECT t1.number, (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name) FROM t_user t1
쿼리 결과:
insert into, 업데이트 및 삭제 후:
insert into는 테이블에 데이터를 삽입하는 데 사용되므로 다음을 수행할 수 있습니다. 열 하위 쿼리 및 테이블 하위 쿼리
-- insert into 后跟子查询 INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime) SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3
여기서 주목해야 할 것은 업데이트 및 삭제입니다
UPDATE t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHERE Weight=110)
DELETE FROM t_user WHERE id= (SELECT id FROM t_user WHERE id=7)
위의 두 SQL, mysql은 다음과 같이 실행할 수 없습니다.
mysql의 기본 메커니즘은 다음과 같은 경우 이 테이블의 구조를 변경하는 것을 방지합니다. 이 테이블 운영
즉, 하위 쿼리는 현재 운영 중인 테이블을 쿼리할 수 없습니다
뒤: 스칼라 하위 쿼리, 열 하위 쿼리, 행 하위 쿼리
-- where后跟标量子查询 -- 查询体重最大的人信息 SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user) -- where后跟列子查询 -- 查询体重大于或等于130的人信息 SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130) -- where后跟行子查询 -- 查询年龄最大,体重最大的人的信息 SELECT * FROM t_user WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)
from 뒤에 올 수 있습니다. subquery
테이블 하위 쿼리의 결과는 여러 행과 열, 즉 테이블
-- 表子查询 SELECT t.age FROM (SELECT age,weight FROM t_user)t
결과:
위 내용은 mysql 하위 쿼리를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!