在MySQL中應用子查詢和標量子查詢的根本操作教程。本站提示廣大學習愛好者:(在MySQL中應用子查詢和標量子查詢的根本操作教程)文章只能為提供參考,不一定能成為您想要的結果。以下是在MySQL中應用子查詢和標量子查詢的根本操作教程正文
MySQL 子查詢
子查詢是將一個 SELECT 語句的查詢成果作為中央成果,供另外一個 SQL 語句挪用。MySQL 支撐 SQL 尺度請求的一切子查詢格局和操作,也擴大了獨有的幾種特征。
子查詢沒有固定的語法,一個子查詢的例子以下:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
對應的兩個數據表以下:
article 文章表:
user 用戶表:
查詢前往成果以下所示:
在該例子中,起首經由過程子查詢語句查詢出一切 status=1 的 uid,現實的查詢相似於:
SELECT * FROM article WHERE uid IN(1,2)
MySQL 標量子查詢
標量子查詢是指子查詢前往的是單一值的標量,如一個數字或一個字符串,也是子查詢中最簡略的前往情勢。
一個標量子查詢的例子以下:
SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
在該例子中,子查詢語句:
SELECT uid FROM user WHERE status = 1 ORDER BY uid DESC LIMIT 1
前往的是單一的數字(如 2),現實的查詢語句為:
SELECT * FROM article WHERE uid = 2
應用子查詢停止比擬
可使用 = > < >= <= <> 這些操作符對子查詢的標量成果停止比擬,平日子查詢的地位在比擬式的右邊:
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
提醒
關於采取這些操作符之一停止的比擬,子查詢必需前往一個標量。獨一的破例是 = 可以和行子查詢同時應用。
子查詢與表銜接
在許多情形下,子查詢的後果與 JOIN 表銜接很相似,但一些特別情形下,是必需用子查詢而不克不及用表銜接的,如:
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 篇文章的一切文章記載。對應的兩個數據表以下:
article 文章表:
user 用戶表:
查詢前往成果以下所示: