exists (sql 返回結(jié)果集為真)
          not exists (sql 不返回結(jié)果集為真)
          如下:
          表A
          ID NAME
          1 A1
          2 A2
          3 A3

          表B
          ID AID NAME
          1 1 B1
          2 2 B2
          3 2 B3

          表A和表B是1對(duì)多的關(guān)系 A.ID => B.AID

          SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
          執(zhí)行結(jié)果為
          1 A1
          2 A2
          原因可以按照如下分析
          SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
          ---> SELECT * FROM B WHERE B.AID=1有值返回真所以有數(shù)據(jù)

          SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
          ---> SELECT * FROM B WHERE B.AID=2有值返回真所以有數(shù)據(jù)

          SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
          ---> SELECT * FROM B WHERE B.AID=3無(wú)值返回真所以沒(méi)有數(shù)據(jù)

          NOT EXISTS 就是反過(guò)來(lái)
          SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
          執(zhí)行結(jié)果為
          3 A3
          ===========================================================================
          EXISTS = IN,意思相同不過(guò)語(yǔ)法上有點(diǎn)點(diǎn)區(qū)別,好像使用IN效率要差點(diǎn),應(yīng)該是不會(huì)執(zhí)行索引的原因
          SELECT ID,NAME FROM A  WHERE ID IN (SELECT AID FROM B)

          NOT EXISTS = NOT IN ,意思相同不過(guò)語(yǔ)法上有點(diǎn)點(diǎn)區(qū)別
          SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)
          posted on 2008-03-19 10:21 湘江夜游神 閱讀(388) 評(píng)論(0)  編輯  收藏 所屬分類: SQL

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          Locations of visitors to this page

          主站蜘蛛池模板: 邹平县| 彭山县| 东辽县| 贵州省| 若尔盖县| 阿拉尔市| 阳江市| 台中市| 延川县| 滦南县| 吉林省| 东阳市| 湘阴县| 鄄城县| 连城县| 嘉兴市| 方山县| 克什克腾旗| 洪江市| 邵阳市| 东安县| 句容市| 兴和县| 堆龙德庆县| 台中县| 商城县| 临汾市| 玉屏| 府谷县| 永修县| 洛南县| 翁源县| 铁岭县| 涟源市| 银川市| 绥宁县| 景洪市| 木里| 互助| 唐海县| 交口县|