MySql의 하위 쿼리는 다중 테이블 쿼리의 중요한 부분으로 조인 쿼리와 함께 자주 사용되며 다중 테이블 쿼리의 기초가 됩니다. 다음 기사는 하위 쿼리를 안내할 것입니다. 도움이 되기를 바랍니다.
하위 쿼리란 무엇인가요?
하위 쿼리, 내부 쿼리라고도 합니다. 쿼리가 다른 쿼리의 조건인 경우 이를 하위 쿼리라고 합니다. 하위 쿼리는 몇 가지 간단한 명령을 사용하여 강력한 복합 명령을 구성할 수 있습니다. 하위 쿼리는 SELECT-SQL 명령의 WHERE 절에서 가장 일반적으로 사용됩니다.
하위 쿼리는 SELECT, SELECT…INTO 문, INSERT…INTO 문, DELETE 문 또는 UPDATE 문 내에 중첩되거나 다른 하위 쿼리 내에 중첩된 SELECT 문입니다.
2. 하위 쿼리 분류
하위 쿼리는 다음과 같은 범주로 구분됩니다.
1. 스칼라 하위 쿼리: 가장 간단한 형태인 단일 값의 스칼라를 반환합니다.
2. 열 하위 쿼리: 반환된 결과 집합은 N개 행과 1개 열입니다.
3. 행 하위 쿼리: 반환된 결과 집합은 N개 열의 행입니다.
4. 테이블 하위 쿼리: 반환된 결과 집합은 N개의 행과 N개의 열입니다.
사용할 수 있는 연산자: = >= 0b10350feb89d12111457853bf8dfc21 ANY IN SOME ALL EXISTS
= > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 ANY IN SOME ALL EXISTS
一个子查询会返回一个标量(就一个值)、一个行、一个列或一个表,这些子查询称之为标量、行、列和表子查询。
如果子查询返回一个标量值(就一个值),那么外部查询就可以使用:=、>、f539a70d3ea090bac4faa80192f58ccc=、d689b422a82bd2829054940788b79b49符号进行比较判断;如果子查询返回的不是一个标量值,而外部查询使用了比较符和子查询的结果进行了比较,那么就会抛出异常。
1、 标量子查询:
是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。 可以使用 = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21
这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧
示例:
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 行一列,该结果通常来自对表的某个字段查询返回。
可以使用 = > 55748b72b7b5b41ec5fb8a57b7d3d084= f107b1785967b39e70b8ef27a88ca302
这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧
可以使用 IN
、ANY
、SOME
和 ALL
操作符,不能直接使用 = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21
1. 스칼라 하위 쿼리:
는 하위 쿼리가 숫자나 문자열과 같은 단일 값을 포함하는 스칼라를 반환한다는 의미이며, 이는 하위 쿼리의 가장 간단한 반환 형식이기도 합니다.= > :<p><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 > ANY (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)</pre></p>
<p>2를 사용할 수 있습니다. MySQL 열 하위 쿼리: </p>
<br><p><strong>는 하위 쿼리에서 반환된 결과 집합이 N개 행과 하나의 열임을 의미합니다. 테이블의 특정 필드에 </strong></p>이 연산자를 사용하여 하위 쿼리의 스칼라 결과를 비교할 수 있습니다. 비교 공식 <p> </p> <code>IN
, ANY
, SOME
및 ALL
연산자를 사용할 수 있지만 = >는 직접 사용할 수 없습니다. 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21
이 연산자는 스칼라 결과를 비교합니다. 예: SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2) SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)NOT IN은 a8093152e673feb7aba1828c43532094의 별칭이며 동일합니다. 특수 사례: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!