Posts tagged with SQL

MySQL INTERSECT

最近因為做了某個作業,才知道 MySQL 目前還不支援 INTERSECT ,如果要的話,目前有個非常「礙眼」的作法:

兩個 SELECT 的交集

  1. INTERSECT 版

    (SELECT ColumnB FROM TableA WHERE ColumnA='Value1')
    INTERSECT (SELECT ColumnB FROM TableB WHERE ColumnA='Value2')

  2. 礙眼版

    SELECT * FROM TableA AS TA, TableB AS TB
    WHERE TA.ColumnA='Value1' AND TB.ColumnA='Value2'
    AND TA.ColumnB=TB.ColumnB

三個 SELECT 的交集

  1. INTERSECT 版

    (SELECT ColumnB FROM TableA WHERE ColumnA='Value1')
    INTERSECT (SELECT ColumnB FROM TableB WHERE ColumnA='Value2')
    INTERSECT (SELECT ColumnB FROM TableC WHERE ColumnA='Value3')

  2. 礙眼版

    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 則有支援,功能強大不過採用的人很少,改天來研究看看原因。

 1