> 데이터 베이스 > MySQL 튜토리얼 > mysql 서브쿼리란 무엇인가

mysql 서브쿼리란 무엇인가

青灯夜游
풀어 주다: 2019-06-01 14:29:42
원래의
8921명이 탐색했습니다.

MySql의 하위 쿼리는 다중 테이블 쿼리의 중요한 부분으로 조인 쿼리와 함께 자주 사용되며 다중 테이블 쿼리의 기초가 됩니다. 다음 기사는 하위 쿼리를 안내할 것입니다. 도움이 되기를 바랍니다.

mysql 서브쿼리란 무엇인가

하위 쿼리란 무엇인가요?

하위 쿼리, 내부 쿼리라고도 합니다. 쿼리가 다른 쿼리의 조건인 경우 이를 하위 쿼리라고 합니다. 하위 쿼리는 몇 가지 간단한 명령을 사용하여 강력한 복합 명령을 구성할 수 있습니다. 하위 쿼리는 SELECT-SQL 명령의 WHERE 절에서 가장 일반적으로 사용됩니다.

하위 쿼리는 SELECT, SELECT…INTO 문, INSERT…INTO 문, DELETE 문 또는 UPDATE 문 내에 중첩되거나 다른 하위 쿼리 내에 중첩된 SELECT 문입니다.

2. 하위 쿼리 분류

하위 쿼리는 다음과 같은 범주로 구분됩니다.

1. 스칼라 하위 쿼리: 가장 간단한 형태인 단일 값의 스칼라를 반환합니다.

2. 열 하위 쿼리: 반환된 결과 집합은 N개 행과 1개 열입니다.

3. 행 하위 쿼리: 반환된 결과 집합은 N개 열의 행입니다.

4. 테이블 하위 쿼리: 반환된 결과 집합은 N개의 행과 N개의 열입니다.

사용할 수 있는 연산자: = >= <= <> ANY IN SOME ALL EXISTS= > < >= <= <> ANY IN SOME ALL EXISTS

一个子查询会返回一个标量(就一个值)、一个行、一个列或一个表,这些子查询称之为标量、行、列和表子查询。

如果子查询返回一个标量值(就一个值),那么外部查询就可以使用:=、>、<、>=、<=和<>符号进行比较判断;如果子查询返回的不是一个标量值,而外部查询使用了比较符和子查询的结果进行了比较,那么就会抛出异常。

1、 标量子查询:

是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。 可以使用 = > < >= <= <> 这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧 

示例:

SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)
로그인 후 복사

2、MySQL 列子查询:

指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回。

可以使用 = > < >= <= <> 这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧

可以使用 INANYSOMEALL 操作符,不能直接使用 = > < >= <= <>

A 하위 쿼리는 스칼라(단지 하나의 값)를 반환합니다. 행, 열 또는 테이블에 대한 이러한 하위 쿼리를 스칼라, 행, 열 및 테이블 하위 쿼리라고 합니다.

하위 쿼리가 스칼라 값(단지 하나의 값)을 반환하는 경우 외부 쿼리는 비교를 위해 =, >, <, >=, <= 및 <> 쿼리가 스칼라 값을 반환하지 않고 외부 쿼리가 비교 연산자를 사용하여 하위 쿼리의 결과를 비교하는 경우 예외가 발생합니다.

1. 스칼라 하위 쿼리:

는 하위 쿼리가 숫자나 문자열과 같은 단일 값을 포함하는 스칼라를 반환한다는 의미이며, 이는 하위 쿼리의 가장 간단한 반환 형식이기도 합니다. = > :<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false">SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1) SELECT s1 FROM table1 WHERE s1 &gt; ANY (SELECT s2 FROM table2) SELECT s1 FROM table1 WHERE s1 &gt; ALL (SELECT s2 FROM table2)</pre><div class="contentsignin">로그인 후 복사</div></div></p><p>2를 사용할 수 있습니다. MySQL 열 하위 쿼리: </p><br/><p><strong>는 하위 쿼리에서 반환된 결과 집합이 N개 행과 하나의 열임을 의미합니다. 테이블의 특정 필드에 </strong></p>이 연산자를 사용하여 하위 쿼리의 스칼라 결과를 비교할 수 있습니다. 비교 공식 <p> </p> <code>IN, ANY, SOMEALL 연산자를 사용할 수 있지만 = >는 직접 사용할 수 없습니다. < >= <= <> 이 연산자는 스칼라 결과를 비교합니다.

예:

SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)
로그인 후 복사
NOT IN은 <>의 별칭이며 동일합니다.

특수 사례:

table2가 빈 테이블인 경우 ALL 이후의 결과는 TRUE입니다.

(0, NULL, 1)과 같은 하위 쿼리가 반환되는 경우 s1이 반환된 결과보다 크더라도 빈 행이 있습니다. 결과적으로 ALL 이후의 결과는 UNKNOWN입니다. 🎜🎜참고: table2 빈 테이블의 경우 다음 문은 모두 NULL을 반환합니다. 🎜
SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)
//注:(1,2) 等同于 row(1,2)
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)
로그인 후 복사
🎜🎜3. MySQL 행 하위 쿼리: 🎜🎜🎜는 하위 쿼리에서 반환된 결과 집합이 N 열의 행임을 의미합니다. 이 하위 쿼리는 일반적으로 테이블의 특정 데이터 행을 쿼리하여 반환된 결과 집합입니다. 🎜🎜예: 🎜
SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
로그인 후 복사
🎜🎜4. MySQL 테이블 하위 쿼리: 🎜🎜🎜는 하위 쿼리에서 반환된 결과 집합이 N행과 N열의 테이블 데이터라는 의미입니다. 🎜🎜예: 🎜rrreee

위 내용은 mysql 서브쿼리란 무엇인가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿