MySql只支持Union(并集)集合運算,好像也是4.0以后才有的;
但是對于交集Intersect、差集Except,就沒有實現(xiàn)了。
一般的解決方案用in和not in來解決,小量數(shù)據(jù)還可以,但數(shù)據(jù)量大了效率就很低了。
其實,可以使用Union來實現(xiàn)另外兩種的運算,當(dāng)然是沒有辦法的辦法。
差集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在某表中多次出現(xiàn)做出檢查。
而且,差集是有先后之分,這里沒有。
posted on 2006-09-01 09:29
rox 閱讀(2646)
評論(0) 編輯 收藏 所屬分類:
DB 、
Mysql