首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 嵌套子查詢實例詳解:FROM 子查詢、行子查詢、EXISTS、關聯條件與支持語法總覽

     編輯:MySQL 綜合教學

MySQL 嵌套子查詢實例詳解:FROM 子查詢、行子查詢、EXISTS、關聯條件與支持語法總覽

MySQL 4.1+ 完整支持標準 SQL 子查詢。本文通過 5 類經典實例,演示 FROM 衍生表、行構造符、EXISTS/NOT EXISTS、多層關聯條件,並總結支持子查詢的 SQL 類型與關鍵字。

1. FROM 子查詢(衍生表)

語法:SELECT ... FROM (subquery) AS alias ...。
示例:對聚合結果再求平均:

SELECT AVG(sum_column1) 
FROM (SELECT SUM(column1) AS sum_column1 FROM t1 GROUP BY column1) AS t1;

解決「不能對聚合結果直接再聚合」的限制。

2. 行子查詢

返回單行多列,配合 ROW() 構造符整行比較:

SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);

3. EXISTS / NOT EXISTS

存在性檢查,子查詢返回至少一行即 TRUE。
例 1:SELECT DISTINCT store_type FROM Stores WHERE EXISTS (SELECT * FROM Cities_Stores WHERE Cities_Stores.store_type = Stores.store_type);
例 2:NOT EXISTS 反向篩選。
例 3:雙層 NOT EXISTS 實現關係除法(找出在所有城市都有分店的店型)。

4. 關聯條件子查詢

子查詢引用外層表別名,逐行計算:

SELECT column1 FROM t1 AS x 
WHERE x.column1 = (SELECT column1 FROM t2 AS x WHERE x.column1 = (SELECT column1 FROM t3 WHERE x.column2 = t3.column1));

5. 其他形式

SELECT (SELECT s1 FROM t2) FROM t1;
SELECT (SELECT s2 FROM t1);

支持子查詢的 SQL 與關鍵字

  • 語句類型:SELECT, INSERT, UPDATE, DELETE, SET, DO
  • 關鍵字:DISTINCT, GROUP BY, LIMIT, ORDER BY, UNION, ALL
  • 比較運算符:<, >, <=, >=, =, <>、集合操作 ANY, IN, SOME
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved