MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

子查詢是將一個(gè)查詢語(yǔ)句嵌套在另一個(gè)查詢語(yǔ)句中,內(nèi)層查詢語(yǔ)句的查詢結(jié)果,可以作為外層查詢語(yǔ)句提供查詢條件。子查詢中可能包括in、not in、any、all、exists和not exists等關(guān)鍵字,還包括比較運(yùn)算符,如“=”、“!=”等,那如何進(jìn)行子查詢,具體操作如下:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

1.首先,在一個(gè)查詢中的查詢結(jié)果作為外層查詢的條件,可以用IN關(guān)鍵字,代碼如下:

SELECT?*?FROM?city?WHERE?CountryCode?IN?(SELECT?Code?FROM?country);

如下圖所示:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

2.其次,外層查詢的條件不在內(nèi)層查詢結(jié)果,可以用NOT IN關(guān)鍵字,代碼如下:

SELECT?*?FROM?city?WHERE?CountryCode?NOT?IN?(SELECT?Code?FROM?country);

如下圖所示:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

3.使用EXISTS關(guān)鍵字查詢時(shí),內(nèi)層查詢語(yǔ)句不返回查詢的記錄,而是返回一個(gè)Boolean值;當(dāng)內(nèi)層查詢返回的值為true時(shí),外層查詢語(yǔ)句將進(jìn)行查詢,如果返回false時(shí),將不進(jìn)行查詢或查詢結(jié)果為空,代碼如下:

SELECT?*?FROM?city?WHERE?EXISTS?(SELECT?Name?FROM?country);

如下圖所示:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

4.由第三步可知,與EXISTS相對(duì)的是NOT EXISTS,當(dāng)內(nèi)層查詢返回的值為false時(shí),外層查詢語(yǔ)句將進(jìn)行查詢,如果返回true時(shí),將不進(jìn)行查詢或查詢結(jié)果為空,代碼如下:

SELECT?*?FROM?city?WHERE?NOT?EXISTS?(SELECT?Name?FROM?country);

如下圖所示:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

5.滿足其中的任一條件,就可以通過(guò)該條件來(lái)執(zhí)行外層查詢語(yǔ)句,用關(guān)鍵字ANY,代碼如下:

SELECT?*?FROM?city?WHERE?Population?>=?ANY?(SELECT?Population?FROM?country);

如下圖所示:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

6.子查詢還包含比較運(yùn)算符,有“>=”、“

SELECT?*?FROM?city?WHERE?Population?&gt;=??(SELECT?Population?FROM?country?WHERE?Name?=?'Afghanistan');  SELECT?*?FROM?city?WHERE?Population?<p>如下圖所示:</p><p><img src="https://img.php.cn//upload/image/558/688/209/1501726758294272.png" title="1501726758294272.png" alt="7.png"></p><p><img src="https://img.php.cn//upload/image/778/734/785/1501726771282297.png" title="1501726771282297.png" alt="8.png"></p><p><img src="https://img.php.cn//upload/image/457/513/489/1501726786134259.png" title="1501726786134259.png" alt="9.png"></p><p><span   style="max-width:90%">7.滿足所有條件,只有滿足內(nèi)層查詢語(yǔ)句返回所有結(jié)果,代碼如下:</span></p><pre class="brush:sql;toolbar:false">SELECT?*?FROM?city?WHERE?Population?&gt;=?ALL?(SELECT?Population?FROM?country?WHERE?Name?=?'Afghanistan');

如下圖所示:

MySQL數(shù)據(jù)庫(kù)中如何進(jìn)行子查詢

注意事項(xiàng)

注意子查詢的用法

注意子查詢中各個(gè)關(guān)鍵字的區(qū)別

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享