隨筆-46  評論-54  文章-0  trackbacks-0
          MySql只支持Union(并集)集合運算,好像也是4.0以后才有的;
          但是對于交集Intersect、差集Except,就沒有實現了。
          一般的解決方案用in和not in來解決,小量數據還可以,但數據量大了效率就很低了。
          其實,可以使用Union來實現另外兩種的運算,當然是沒有辦法的辦法。

          差集Except:
          SELECT ID FROM (
          SELECT DISTINCT A.AID AS ID FROM TABLE_A A
          UNION ALL
          SELECT DISTINCT B.BID AS ID FROM TABLE_B B
          )TEMP GROUP BY ID HAVING COUNT(ID) = 1

          交集Intersect:
          SELECT ID FROM (
          SELECT DISTINCT A.AID AS ID FROM TABLE_A A
          UNION ALL
          SELECT DISTINCT B.BID AS ID FROM TABLE_B B
          )TEMP GROUP BY ID HAVING COUNT(ID) = 2

          不過,上述方法的功能也有限,
          只能用來檢查某個id是不是A、B表中都存在,
          或者只存在于A、B表其中之一,
          并不能對id在某表中多次出現做出檢查。
          而且,差集是有先后之分,這里沒有。

          posted on 2006-09-01 09:29 rox 閱讀(2654) 評論(0)  編輯  收藏 所屬分類: DBMysql

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 普格县| 高邑县| 广西| 来宾市| 滕州市| 安平县| 廉江市| 达尔| 灌云县| 田东县| 华坪县| 开化县| 无为县| 威远县| 新龙县| 辽阳县| 宝山区| 阜新| 秦安县| 日土县| 武隆县| 萝北县| 长治县| 读书| 镇原县| 江西省| 景谷| 安化县| 峨边| 寿宁县| 新宾| 汤原县| 左贡县| 玉龙| 宁波市| 长岛县| 郓城县| 开阳县| 黄平县| 电白县| 叙永县|