MYsql 子查詢

xiadada2發表於2018-05-15

一:返回結果為單行單列和單行多列子查詢。

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

        select name

               from t_employee

                    where  sal>(

                        select sal 

                            from t_employee

                                    where ename='smith'

                                        );

        select name,sal,job

            from t_employee

                where (sal,job) = (

                    select sal,job

                           from t_employee

                                where name='SMITH'

                                    );

二:返回結果為 多行單列子查詢。

            有僱員表t_employee和部門表t_dept.

        (1).當子查詢的返回結果為多行單列資料記錄時,該子查詢語句一般會在主查詢語句where 字語句裡出現。通常會包含in,any,all,exists等關鍵字。

        select * 

            from t_employee

                where deptno in(

                    select deptno

                        from t_dept

                             );

        (2).帶有any關鍵字的子查詢.

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

            =any :其功能與關鍵字in一樣。

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

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

        select name,sal

            from t_employee

                where sal=>any(

                    select sal from t_employee

                        where job='manager');

         

(3).帶有all關鍵字的子查詢.

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

            >all(>=all)   :比子查詢中返回資料記錄中最大的資料還要大的記錄;

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

        select name,sal

            from t_employee

                where sal=>all(

                    select sal from t_employee

                        where job='manager');

                    

相關文章