国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

在MySQL中使用子查詢和標量子查詢的基本操作教程

2024-07-24 12:45:11
字體:
來源:轉載
供稿:網(wǎng)友

MySQL 子查詢
子查詢是將一個 SELECT 語句的查詢結果作為中間結果,供另一個 SQL 語句調用。MySQL 支持 SQL 標準要求的所有子查詢格式和操作,也擴展了特有的幾種特性。
子查詢沒有固定的語法,一個子查詢的例子如下:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)

對應的兩個數(shù)據(jù)表如下:
article 文章表:

20151216174700333.png (634×129)

user 用戶表:

20151216174728484.png (651×109)

查詢返回結果如下所示:

20151216174746208.png (635×105)

在該例子中,首先通過子查詢語句查詢出所有 status=1 的 uid,實際的查詢類似于:

SELECT * FROM article WHERE uid IN(1,2)

MySQL 標量子查詢
標量子查詢是指子查詢返回的是單一值的標量,如一個數(shù)字或一個字符串,也是子查詢中最簡單的返回形式。
一個標量子查詢的例子如下:

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

返回的是單一的數(shù)字(如 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)

該例子要找出用戶發(fā)表了 2 篇文章的所有文章記錄。對應的兩個數(shù)據(jù)表如下:
article 文章表:

20151216174809098.png (647×127)

user 用戶表:

20151216174824703.png (640×100)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 皮山县| 碌曲县| 财经| 元朗区| 广灵县| 酒泉市| 平顺县| 田阳县| 出国| 奎屯市| 弥勒县| 大厂| 曲周县| 嵩明县| 樟树市| 新宾| 乐陵市| 岱山县| 黑水县| 开封市| 延吉市| 宜章县| 兴城市| 枣庄市| 贞丰县| 木兰县| 固阳县| 浦北县| 彭山县| 龙川县| 虹口区| 丹东市| 宁武县| 福安市| 固原市| 阳信县| 贵德县| 扎兰屯市| 上蔡县| 仁寿县| 合山市|