我做了一個小測試的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個變體。需要你的幫助。由於
我做了一個小測試的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個變體。需要你的幫助。由於
比JOIN
其他可以如用一個Correlated Subquery
和WHERE 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);
的另一個變種第一種情況是
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。
我猜加入(左,右,內)是一個答案無論如何,但謝謝 –
您是否可以爲此案例提供至少1個'Correlated Subquery'的例子。謝謝。 –
@VadZelenin,如果有幫助,請參閱編輯答案。 – Rahul