不太確定,我完全理解你的問題。我明白,你想找到這對於在COL3所有三個表共同的價值觀......如果這是你的問題,你可以做到這一點的INNER JOIN,這裏是如何:
SELECT DISTINCT(t1.col3) AS IdenticalValuesInAll
FROM t1
INNER JOIN t2
ON t1.col3 = t2.col3
INNER JOIN t3
ON t1.col3 = t3.col3 OR t2.col3 = t3.col3;
在這裏,我創建一個SQL Fiddle所以你可以看到它是如何工作的...(你會注意到列col3中所有三個表共有的數字是11和23)
如果你想從table1中選擇col1,col2,col3(t1在我的例如)在col3中有與所有三個表格相同的值,比你簡單地做這種事情更有效
SELECT t1.col1, t1.col2, t1.col3
FROM t1
INNER JOIN t2
ON t1.col3 = t2.col3
INNER JOIN t3
ON t1.col3 = t3.col3 OR t2.col3 = t3.col3;
這是Fiddle。
現在,如果你想選擇一些錶行(COL1,COL2,COL3),其中在COL3沒有了,你可以做這樣的事情的所有表一個共同的價值:
SELECT col1, col2, col3
FROM t1
WHERE col3 NOT IN (SELECT DISTINCT(t1.col3) AS commonForAllTables
FROM t1
INNER JOIN t2
ON t1.col3 = t2.col3
INNER JOIN t3
ON t1.col3 = t3.col3 OR t2.col3 = t3.col3);
當然這裏是SQL Fiddle怎麼看那個樣子......
現在,如果你想從這個表將包含來自這三本表中的所有行做一個大表比你使用UNION ALL
SELECT col1, col2, col3
FROM t1
UNION ALL
SELECT col1, col2, col3
FROM t2
UNION ALL
SELECT col1, col2, col3
FROM t3;
這裏是該查詢的結果SQL Fiddle
而且你可以操縱那張大桌子,你喜歡什麼。
下面是例子,我們要選擇從所有三個表中的所有行(從大的一個),其中COL3並不適用於所有三個表
SELECT col1, col2, col3
FROM (SELECT col1, col2, col3
FROM t1
UNION ALL
SELECT col1, col2, col3
FROM t2
UNION ALL
SELECT col1, col2, col3
FROM t3) bigTable
WHERE col3 NOT IN (SELECT DISTINCT(t1.col3) AS commonForAllTables
FROM t1
INNER JOIN t2
ON t1.col3 = t2.col3
INNER JOIN t3
ON t1.col3 = t3.col3 OR t2.col3 = t3.col3);
包含類似的值這裏是SQL Fiddle該查詢!
當然,如果你想從所有三個表中只選擇col3中的公用值而不是WHERE子句中的所有值,而不是使用IN,那麼它就可以工作。
希望這個幫助,關於內部聯接,聯盟等你可以在網上找到很多材料,所以只是谷歌一點我不認爲我應該在這裏解釋它是如何工作的,因爲我認爲我不能解釋它更好那些已經寫完整篇文章的人。
GL!
P.S.如果您有任何疑問,請填寫下面的評論。
你的代碼甚至沒有接近有效。 'UNION'用於組合多個'SELECT'查詢的結果,你不能寫'UNION FROM',它應該是'SELECT ... UNION SELECT ... UNION SELECT ...'。我真的不明白你想做什麼。你能展示一些樣本輸入數據和期望的結果嗎? – Barmar