mysql之子查詢

來源:互聯網
上載者:User

標籤:

所謂子查詢,就是指在一個查詢之中嵌套了其他的若干查詢,通過子查詢可以實現多表查詢,該查詢語句中可能包含IN,ANY,ALL和EXISTS等關鍵字,除此之外還可以包含比較子,子查詢經常出現在WHERE和FROM字句中。

WHERE字句中的子查詢:該位置處的子查詢一般返回單行單列,多行單列,單行多列資料記錄。

FROM字句中的子查詢:該位置處的子查詢一般返回多行多列資料記錄,可以當作一張暫存資料表。

1. 返回結果為單行單列和單行多列子查詢

當子查詢的返回結果為單行單列資料記錄時,該子查詢語句一般在主查詢語句的WHERE子句裡,通常會包含比較子(">","<","=","!="等)。

1.1 返回結果為單行單列子查詢

SELECT * FROM e_employee WHERE sal >(SELECT sal FROM t_employee WHERE ename=‘SMITH‘)

1.2 返回結果為單行多列子查詢

SELECT ename,sal,job FROM e_employee WHERE (sal,job) = (SELECT sal,job FROM t_employee WHERE ename=‘SMITH‘)

2. 返回結果為多行單列子查詢

當子查詢的返回結果為多行單列資料記錄時,該子查詢語句一般在主查詢語句的WHERE子句裡,通常會包含IN,ANY,ALL,EXISTS等關鍵字。

2.1 帶有關鍵字IN的子查詢

當主查詢語句的條件是子查詢的查詢結果時,就可以通過關鍵字IN來進行判斷,相反如果想實現主查詢的條件不是子查詢的查詢結果時,就可以通過關鍵字NOT IN來進行判斷。

SELECT * FROM t_employee WHERE deptno IN (SELECT deptno FROM t_dept)

2.2 帶有關鍵字ANY的子查詢

SELECT ename,sal FROM t_employee WHERE sal >ANY IN (SELECT sal FROM t_employee WHERE job=‘MANAGER‘)

關鍵字ANY用來表示主查詢的條件為滿足子查詢返回查詢結果中任意一條資料記錄,該關鍵字有三種匹配方式,分別如下:

=ANY:其功能與關鍵字IN一樣。

>ANY(>=ANY):比子查詢中返回資料記錄中最小的還要大於(大於等於)資料記錄。

<ANY(<=ANY):比子查詢中返回資料記錄中最大的還要大於(小於等於)資料記錄。

2.3 帶有關鍵字ALL的子查詢

SELECT ename,sal FROM t_employee WHERE sal >ALL IN (SELECT sal FROM t_employee WHERE job=‘MANAGER‘)

關鍵字ALL用來表示主查詢的條件為滿足子查詢返回查詢結果中所有資料記錄,該關鍵字有以下兩種匹配方式。

>ALL(>=ALL):比子查詢中返回資料記錄中最大的還要大於(大於等於)資料記錄。

<ALL(<=ALL):比子查詢中返回資料記錄中最小的還要大於(大於等於)資料記錄。

2.4 帶有關鍵字EXISTS的子查詢

關鍵字EXISTS是一個布爾類型,當返回結果集時為TRUE,不能返回結果集時為FALSE。查詢時EXISTS對外表採用遍曆方式逐條查詢,每次查詢都會比較EXISTS的條件陳述式,當EXISTS裡的條件陳述式返回記錄行時則條件為真,此時返回當前遍曆到的記錄;反之,如果EXISTS裡的條件陳述式不能返回記錄行,則丟棄當前遍曆到的記錄。

SELECT * FROM t_dept c WHERE NOT EXISTS (SELECT * FROM e_employee WHERE deptno=c.deptno);

3. 返回結果為多行多列子查詢

當子查詢的返回結果為多行多列資料記錄時,該子查詢語句一般會在主查詢語句的FROM子句裡,被當作一張暫存資料表的方式來處理。

mysql之子查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.