WEB開(kāi)發(fā) de 點(diǎn)滴

          by sanwish

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            38 隨筆 :: 0 文章 :: 4 評(píng)論 :: 0 Trackbacks

          可以用 ALL 或 ANY 關(guān)鍵字修改引入子查詢(xún)的比較運(yùn)算符。SOME 是 SQL-92 標(biāo)準(zhǔn)的 ANY 的等效物。

          由帶修改的比較運(yùn)算符引入的子查詢(xún)返回一列零值或更多值,并且可以包括 GROUP BY 或 HAVING 子句。這些子查詢(xún)可通過(guò) EXISTS 重新表述。

          以 > 比較運(yùn)算符為例,>ALL 表示大于每一個(gè)值;換句話(huà)說(shuō),大于最大值。例如,>ALL (1, 2, 3) 表示大于 3。>ANY 表示至少大于一個(gè)值,也就是大于最小值。因此 >ANY (1, 2, 3) 表示大于 1。

          要使帶有 >ALL 的子查詢(xún)中的某行滿(mǎn)足外部查詢(xún)中指定的條件,引入子查詢(xún)的列中的值必須大于由子查詢(xún)返回的值的列表中的每個(gè)值。

          同樣,>ANY 表示要使某一行滿(mǎn)足外部查詢(xún)中指定的條件,引入子查詢(xún)的列中的值必須至少大于由子查詢(xún)返回的值的列表中的一個(gè)值。

          說(shuō)明??下例可以用多種方法運(yùn)行,只要內(nèi)部查詢(xún)只返回一個(gè)值即可。

          USE pubs
          -- Option 1 using MAX in the inner query
          SELECT title
          FROM titles
          HAVING MAX(advance) > ALL
          WHERE advance > ALL
             (
              SELECT MAX(advance)
              FROM publishers INNER JOIN titles ON 
                titles.pub_id = publishers.pub_id
              WHERE pub_name = 'Algodata Infosystems'
             )
          
          -- Option 2 using GROUP BY and HAVING and no ALL 
          USE pubs
          SELECT title
          FROM titles
          GROUP BY title
          HAVING MAX(advance) > 
             (
              SELECT MAX(advance)
              FROM publishers INNER JOIN titles ON 
                titles.pub_id = publishers.pub_id
              WHERE pub_name = 'Algodata Infosystems'
             )
          

          下面的查詢(xún)提供一個(gè)由 ANY 修改的比較運(yùn)算符引入的子查詢(xún)的示例。它將查找收到的預(yù)付款大于 Algodata Infosystems 支付的最低預(yù)付款金額的書(shū)名。

          USE pubs
          SELECT title
          FROM titles
          WHERE advance > ANY
             (SELECT advance
             FROM publishers INNER JOIN titles
             ON titles.pub_id = publishers.pub_id
                AND pub_name = 'Algodata Infosystems')
          

          下面是結(jié)果集:

          title
          ---------------------------------------------------------------
          You Can Combat Computer Stress!
          The Gourmet Microwave
          But Is It User Friendly?
          Secrets of Silicon Valley
          Computer Phobic and Non-Phobic Individuals: Behavior Variations
          Life Without Fear
          Onions, Leeks, and Garlic: Cooking Secrets of the Mediterranean
          Sushi, Anyone?
          
          (8 row(s) affected)
          

          對(duì)于每種書(shū)名,內(nèi)部查詢(xún)查找一列由 Algodata 支付的預(yù)付款金額。外部查詢(xún)查看列表中的所有值,并確定當(dāng)前考慮的書(shū)名是否已收到大于任何其它金額的預(yù)付款。換句話(huà)說(shuō),將查找預(yù)付款等于或大于 Algodata 支付的最低金額的書(shū)名。

          如果子查詢(xún)不返回任何值,那么整個(gè)查詢(xún)將不會(huì)返回任何值。

          =ANY 運(yùn)算符與 IN 等效。例如,要查找與出版商住在同一個(gè)城市的作者,可以使用 IN 或 =ANY。

          USE pubs
          SELECT au_lname, au_fname
          FROM authors
          WHERE city IN
             (SELECT city
             FROM publishers)
          
          USE pubs
          SELECT au_lname, au_fname
          FROM authors
          WHERE city = ANY
             (SELECT city
             FROM publishers)
          

          下面是任一查詢(xún)的結(jié)果集:

          au_lname         au_fname
          --------         ---------
          Carson         Cheryl
          Bennet         Abraham
          
          (2 row(s) affected)
          

          但是,< >ANY 運(yùn)算符與 NOT IN 有所不同:< >ANY 表示不等于 a,或不等于 b,或不等于 c。而 NOT IN 表示不等于 a,且不等于 b,且不等于 c。但 <>ALL 與 NOT IN 意義相同。

          例如,下面的查詢(xún)查找在沒(méi)有出版商的城市中居住的作者。

          USE pubs
          SELECT au_lname, au_fname
          FROM authors
          WHERE city <> ANY
             (SELECT city
             FROM publishers)
          

          下面是結(jié)果集:

          au_lname                                 au_fname             
          ---------------------------------------- -------------------- 
          White                                    Johnson              
          Green                                    Marjorie             
          Carson                                   Cheryl               
          O'Leary                                  Michael              
          Straight                                 Dean                 
          Smith                                    Meander              
          Bennet                                   Abraham              
          Della Buena                              Ann                  
          Gringlesby                               Burt                 
          Locksley                                 Charlene             
          Greene                                   Morningstar          
          Blotchet-Halls                           Reginald             
          Yokomoto                                 Akiko                
          del Covello                              Innes                
          DeFrance                                 Michel               
          Stringer                                 Dirk                 
          MacFeather                               Stearns              
          Karsen                                   Livia                
          Panteley                                 Sylvia               
          Hunter                                   Sheryl               
          McBadden                                 Heather              
          Ringer                                   Anne                 
          Ringer                                   Albert               
          
          (23 row(s) affected)
          

          因?yàn)槊總€(gè)作者所在的城市中都有一個(gè)或多個(gè)出版商不在那里居住,所以結(jié)果包括所有 23 個(gè)作者。內(nèi)部查詢(xún)找出所有住有出版商的城市,然后對(duì)于每個(gè)城市,外部查詢(xún)查找不住在該城市的作者。

          但是,如果在該查詢(xún)中使用 NOT IN,那么結(jié)果將包括除了 Cheryl Carson 和 Abraham Bennet 以外的所有作者,因?yàn)樗麄冏≡?Algodata Infosystems 所處的 Berkeley。

          USE pubs
          SELECT au_lname, au_fname
          FROM authors
          WHERE city NOT IN
             (SELECT city
             FROM publishers)
          

          下面是結(jié)果集:

          au_lname                                 au_fname             
          ---------------------------------------- -------------------- 
          White                                    Johnson              
          Green                                    Marjorie             
          O'Leary                                  Michael              
          Straight                                 Dean                 
          Smith                                    Meander              
          Della Buena                              Ann                  
          Gringlesby                               Burt                 
          Locksley                                 Charlene             
          Greene                                   Morningstar          
          Blotchet-Halls                           Reginald             
          Yokomoto                                 Akiko                
          del Covello                              Innes                
          DeFrance                                 Michel               
          Stringer                                 Dirk                 
          MacFeather                               Stearns              
          Karsen                                   Livia                
          Panteley                                 Sylvia               
          Hunter                                   Sheryl               
          McBadden                                 Heather              
          Ringer                                   Anne                 
          Ringer                                   Albert               
          
          (21 row(s) affected)
          

          還可以通過(guò)使用 < >ALL 運(yùn)算符獲得相同的結(jié)果,該運(yùn)算符與 NOT IN 等效。

          USE pubs
          SELECT au_lname, au_fname
          FROM authors
          WHERE city <> ALL
             (SELECT city
             FROM publishers)
          
          posted on 2008-11-10 10:02 sanwish 閱讀(229) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Sql
          主站蜘蛛池模板: 玉山县| 柳江县| 毕节市| 秦皇岛市| 沙河市| 阜平县| 桂林市| 原平市| 聂拉木县| 建宁县| 中超| 玉溪市| 鹰潭市| 敦化市| 安徽省| 香港 | 乐陵市| 巴青县| 陇南市| 揭阳市| 滁州市| 玉溪市| 盖州市| 奉节县| 乐东| 邹城市| 瑞丽市| 长沙市| 江安县| 南郑县| 曲周县| 安福县| 铜陵市| 贵溪市| 滨海县| 邳州市| 宜兰市| 喜德县| 孟州市| 育儿| 安阳县|