Fra*_*isc 4 sql sqlite join many-to-one
我有一个表,其中有几列包含另一个表的 ID。例子:
T1 {id,p1,p2,p3}
T2 {id,name}
Run Code Online (Sandbox Code Playgroud)
所以p1,p2和p3来自标识T2。我想要做的是选择所有,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;
Run Code Online (Sandbox Code Playgroud)
应该这样做吗?有什么我应该担心的速度问题吗?
谢谢你。
是的,这是正确的方法。如果您知道这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
Run Code Online (Sandbox Code Playgroud)
您可能需要查看列的外键,T1以确保在T2.
性能应该不错,这是一个非常标准的查询。
| 归档时间: |
|
| 查看次数: |
3990 次 |
| 最近记录: |