2016-09-26 106 views
1

我做了一個小測試的MySQL,並有一個問題選擇:Mysql請求。從兩個表

這裏有兩個表:T1 {t1_id,t1_name},{T2 t2_id,t1_id,t2_name}。 提供兩個表中選擇請求的3個變種,對於t1.t1_id = t2.t1_id,並t1.t1_id選擇請求的3個變種!= t2.t1_id

我真的卡在那裏。我只知道一種方法來選擇通過連接,我知道在大多數情況下是正確的。但它只是1個變體。需要你的幫助。由於

回答

1

JOIN其他可以如用一個Correlated SubqueryWHERE EXISTS與相同條件的連接條件

使用EXISTS

select * from t1 
where exists(select 1 from t2 where t1.t1_id = t1_id); 

Correlated Subquery

select * from t1 
where t1_id in (select t1_id from t2); 
+0

您是否可以爲此案例提供至少1個'Correlated Subquery'的例子。謝謝。 –

+0

@VadZelenin,如果有幫助,請參閱編輯答案。 – Rahul

2

的另一個變種第一種情況是

select * from t1, t2 
where t1.t1_id = t2.t1_id 

我認爲這被稱爲隱式連接或(隨便)逗號連接。這是隱含的,因爲你從來不使用單詞JOIN,但你要求這兩個字段是相等的。

另一方案對於第二種情況可能是做

select * 
from t1 left join t2 on t1.t1_id = t2.t1_id 
where t2.t1_id is null 

,因爲這會給你的情況下t2.t1_id不是表T1。

+0

我猜加入(左,右,內)是一個答案無論如何,但謝謝 –