最近因為做了某個作業,才知道 MySQL 目前還不支援 INTERSECT ,如果要的話,目前有個非常「礙眼」的作法:
兩個 SELECT 的交集
INTERSECT 版
(SELECT ColumnB FROM TableA WHERE ColumnA='Value1') INTERSECT (SELECT ColumnB FROM TableB WHERE ColumnA='Value2')礙眼版
SELECT * FROM TableA AS TA, TableB AS TB WHERE TA.ColumnA='Value1' AND TB.ColumnA='Value2' AND TA.ColumnB=TB.ColumnB
三個 SELECT 的交集
INTERSECT 版
(SELECT ColumnB FROM TableA WHERE ColumnA='Value1') INTERSECT (SELECT ColumnB FROM TableB WHERE ColumnA='Value2') INTERSECT (SELECT ColumnB FROM TableC WHERE ColumnA='Value3')礙眼版
SELECT * FROM TableA AS TA, TableB AS TB, TableC AS TC WHERE TA.ColumnA='Value1' AND TB.ColumnA='Value2' AND TC.ColumnA='Value3' AND TA.ColumnB=TB.ColumnB AND TA.ColumnB=TC.ColumnB
最後我們只做了兩個的交集,三個以上實在太礙眼了 XD
另一個常見的開放原始碼 SQL 伺服器 PostgreSQL 則有支援,功能強大不過採用的人很少,改天來研究看看原因。