首頁 >資料庫 >mysql教程 >mysql常用基礎操作語法(十)~~子查詢【指令列模式】

mysql常用基礎操作語法(十)~~子查詢【指令列模式】

黄舟
黄舟原創
2017-03-03 14:22:381230瀏覽

mysql中雖然有連線查詢實作多表連線查詢,但是連線查詢的效能很差,因此便出現了子查詢。

1、理論上,子查詢可以出現在查詢語句的任何位置,但實際應用中多出現在from後和where後面。出現在from後的子查詢結果通常是多行多列的,充當臨時表;而出現在where後面的子查詢結果通常是單行單列,充當條件:





2、where後作為條件的子查詢多與「=」、「!=」、「>」、「<」等比較運算子一起使用。結果雖然通常是單行單列,但是有的時候也會用單行多列,而且有的時候還會傳回多行單列。如果是多行單列的情況,則多與in、any、all、exists結合使用:

in和not in:


其中in表示包含於後邊子查詢結果集裡的任一個,not in表示不包含於後邊結果集裡的任一個。上圖子查詢的結果中,回傳depart_id為1、2、4,因此第一個查詢就會查出emp中所有depart_id是1或2或4的,第二個就會查出既不是1也不是2也不是4的。

any:


=any的用法和in的效果是一樣的;>any是說要大於子查詢結果集裡的任一個就可以,簡單理解就是只要大於結果集中最小的那個就可以;any是只要大於1就行,而

all:

############>all就是說要大於子查詢結果集裡所有的,簡單理解就是要比最大的那個還大;
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn