隨筆-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

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


          網站導航:
           
          主站蜘蛛池模板: 大化| 江孜县| 桂东县| 治县。| 灵台县| 保德县| 攀枝花市| 葫芦岛市| 林周县| 依安县| 彝良县| 甘肃省| 明星| 肥城市| 怀化市| 南木林县| 毕节市| 教育| 安塞县| 永顺县| 金湖县| 尚义县| 两当县| 南溪县| 富锦市| 大理市| 通山县| 五寨县| 河池市| 赣榆县| 贡觉县| 同江市| 绵阳市| 清徐县| 西林县| 沙湾县| 卓资县| 凤城市| 柘荣县| 宜丰县| 福安市|