[英]SQLite left joining twice on the same table
我有一張表,其中有幾列,其中包含另一張表的ID。 例:
T1 {id,p1,p2,p3}
T2 {id,name}
因此, p1
, p2
和p3
是來自T2
ID。 我想做的是從T1
選擇所有內容,並從T2
中也獲得名稱值。
這就是我現在正在使用的:
select
T1.id,T1.p1,T1.p2,T1.p3,
T2a.name as p1_name,T2b.name as p2_name,T2c.name as p3_name
from
T1 left join T2 as T2a on T1.p1=T2a.id
left join T2 as T2b on T1.p2=T2b.id
left join T2 as T2c on T1.p3=T2c.id;
那應該怎么做? 我應該擔心任何速度問題嗎?
謝謝。
是的,這是正確的方法。 如果您知道T2
將具有所有正確的值,則可以使用內部聯接而不是外部聯接:
select T1.id,
T1.p1, T21.name as p1_name,
T1.p2, T22.name as p2_name,
T1.p3, T23.name as p3_name
from T1
join T2 as T21 on T1.p1 = T21.id,
join T2 as T22 on T1.p2 = T22.id,
join T2 as T23 on T1.p3 = T23.id
您可能希望查看T1
列的外鍵 ,以確保在T2
確實擁有所需的一切。
性能應該很好,這是一個非常標准的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.