它可以通過多種方式完成。到目前爲止,masum7 vai的解決方案似乎是最好的。然而,除此之外,也可以通過以下方式進行,以及:
SELECT * FROM table_2 as t2
WHERE t2.column_1 IN
(SELECT t1.column_1 FROM table_1 as t1
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
有點複雜,因爲我已經使用子查詢代替連接。所以讓我解釋一下。
第一部分:
SELECT * FROM table_2 as t2
打算從table_2
檢索ALL值。
但話又說回來,你要根據來自table_1
一些具體數據從table_2
一些具體數據。因此,這裏是WHERE
子句,以及從table_1
中檢索數據的子查詢。
第二部分:
WHERE t2.column_1 IN
(SELECT t1.column_1 FROM table_1 as t1
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
可以被分成進一步的子部分。
副部 - 1:
SELECT t1.column_1 FROM table_1 as t1
是要檢索的table_1
column_1
ALL值。
但是,那不是你想要的。您想要特指:
a。 b。在column_2
和
中存在的那些column_1
的值。與此同時,的column_1
這些值針對column_3
值爲1
基於這2點,自帶子部分2
子部分 - 2:
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
第一WHERE
條件說column_1
值必須存在於所有column_2
值的嵌套子查詢中。第二個說,相應的column_3
值必須是1.
希望這個查詢檢索您的預期結果,並且您理解我對查詢的解釋。祝你好運,祝你有美好的一天!祝您在StackOverflow中有一段美好的旅程。 :)
EDIT-1:
只是一個小除了查詢。我忘了添加一個GROUP BY
條款。它應該是GROUP BY
t2.column_1
。
因此,修改後的查詢變爲:
SELECT * FROM table_2 as t2
WHERE t2.column_1 IN
(SELECT t1.column_1 FROM table_1 as t1
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
GROUP BY t2.column_1
對不起,我錯過了出來。 :)
謝謝我得到它的工作,因爲我想。 – Joe 2014-09-23 04:15:42