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

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

MySQL的子查詢中FROM和EXISTS子句的使用教程

2024-07-24 12:45:18
字體:
供稿:網(wǎng)友

FROM 子查詢
FROM 子句中的子查詢
MySQL FROM 子查詢是指 FROM 的子句作為子查詢語句,主查詢再到子查詢結(jié)果中獲取需要的數(shù)據(jù)。FROM 子查詢語法如下:

SELECT ... FROM (subquery) AS name ...

子查詢會生成一個(gè)臨時(shí)表,由于 FROM 子句中的每個(gè)表必須有一個(gè)名稱,因此 AS name 是必須的。FROM 子查詢也稱為衍生數(shù)據(jù)表子查詢。
FROM 子查詢實(shí)例
table1:

s1 s21 52 123 20

FROM 子查詢 SQL 如下:
SELECT s1,s2 FROM (SELECT s1, s2*2 AS s2 FROM table1) AS temp WHERE s1 > 1
查詢返回結(jié)果如下所示:

s1 s22 243 40

提示
MySQL FROM 子句中的子查詢可以返回標(biāo)量、列、行或表,但不能為有關(guān)聯(lián)的子查詢。

MySQL 子查詢 EXISTS 和 NOT EXISTS
MySQL EXISTS 和 NOT EXISTS 子查詢
MySQL EXISTS 和 NOT EXISTS 子查詢語法如下:

SELECT ... FROM table WHERE EXISTS (subquery)

該語法可以理解為:將主查詢的數(shù)據(jù),放到子查詢中做條件驗(yàn)證,根據(jù)驗(yàn)證結(jié)果(TRUE 或 FALSE)來決定主查詢的數(shù)據(jù)結(jié)果是否得以保留。
MySQL EXISTS 子查詢實(shí)例
下面以實(shí)際的例子來理解 EXISTS 子查詢。下面是原始的數(shù)據(jù)表:
article 文章表:

2015121795225188.png (641×126)

user 用戶表:

2015121795243080.png (643×104)

我們要查出 article 表中的數(shù)據(jù),但要求 uid 必須在 user 表中存在。SQL 語句如下:

SELECT * FROM article WHERE EXISTS (SELECT * FROM user WHERE article.uid = user.uid)

返回查詢結(jié)果如下:

2015121795301254.png (645×107)

從語句執(zhí)行結(jié)果可以看出,article 表中第 4 條記錄沒有被保留,原因就是該條記錄的數(shù)據(jù)在子查詢中返回的結(jié)果是 FALSE 。
當(dāng)上面的 SQL 使用 NOT EXISTS 時(shí),查詢的結(jié)果就是 article 表中 uid 不存在于 user 表中的數(shù)據(jù)記錄。
提示
EXISTS (subquery) 只返回 TRUE 或 FALSE,因此子查詢中的 SELECT * 也可以是 SELECT 1 或其他,官方說法是實(shí)際執(zhí)行時(shí)會忽略 SELECT 清單,因此沒有區(qū)別。
EXISTS 子查詢的實(shí)際執(zhí)行過程可能經(jīng)過了優(yōu)化而不是我們理解上的逐條對比,如果擔(dān)憂效率問題,可進(jìn)行實(shí)際檢驗(yàn)以確定是否有效率問題。
EXISTS 子查詢往往也可以用條件表達(dá)式、其他子查詢或者 JOIN 來替代,何種最優(yōu)需要具體問題具體分析。

您可能感興趣的文章:

MYSQL使用inner join 進(jìn)行 查詢/刪除/修改示例MySQL查詢優(yōu)化:連接查詢排序limit(join、order by、limit語句)介紹MySQL優(yōu)化之使用連接(join)代替子查詢MySQL利用profile分析慢sql詳解(group left join效率高于子查詢)mysql多個(gè)left join連接查詢用法分析mysql使用from與join兩表查詢的區(qū)別總結(jié)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汝阳县| 吴忠市| 乌恰县| 芮城县| 民和| 大厂| 云安县| 托克逊县| 钟山县| 大化| 阜康市| 阜南县| 罗城| 楚雄市| 商城县| 阳朔县| 河间市| 五原县| 自贡市| 安徽省| 永泰县| 华阴市| 伊通| 周宁县| 德江县| 洛阳市| 汽车| 周宁县| 南靖县| 九龙坡区| 承德县| 肥乡县| 威宁| 台湾省| 措美县| 郧西县| 梁平县| 韩城市| 云林县| 镇沅| 桐柏县|