sql join (以left join为例)的表的先后顺序主要如何考虑? 100
6个回答
展开全部
说明:
left join 是左连接查询
LEFT JOIN 关键字会从左表 (A) 那里返回所有的行,即使在右表 (B) 中没有匹配的行。
语法:
select A.*,B.* from A left join B on A.x=B.x
分析:
上面sql中:left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在不影响速度的情况下可以不考虑顺序,当查询速度慢时,优化查询速度时要考虑left join表的顺序。以查询表的数据量小的放置在前,以有查询过滤条件的放置在前面,优先关联
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from
A left join B on A.Id=B.Id
sql是这样做的
以A表的某一个A.Id为基准 查询B表的B.id是否有该A.id的记录
有几行 那么查询节点 关于当前A.id的记录就有几条
如果B表彻底没有A.id的记录 B表的所有字段全部按null处理
A left join B on A.Id=B.Id
sql是这样做的
以A表的某一个A.Id为基准 查询B表的B.id是否有该A.id的记录
有几行 那么查询节点 关于当前A.id的记录就有几条
如果B表彻底没有A.id的记录 B表的所有字段全部按null处理
更多追问追答
追问
我的问题不是问什么是left join,而是问假如有多个表需要left join,如何确定先写哪个后写哪个?你的答案只说了两个表,请多说几个表,并说明是否必须以哪个顺序来查询。
追答
按照哪个顺序来查询 主要取决于你的需求。你要查询什么东西,而并不是必须按照那个顺序来查。大多数情况下inner join 就可以了,left join主要用于必须还要显示出没有的数据。
可以这样类比 学生Student 考试成绩Score,如果学生没有参加课程的考试,则在成绩表中就没有数据行 此时左连接left join 就可以把所有学生的Score查出来,如果Score is null 说明没有参加考试 select * from Student a left join Score b on a.StuId=n.StuId
select * from A left join B on A.Id1=B.Id
left join C on A.Id2=C.Id
left join D on A.Id3=D.Id
.....
这是四表左连接查询 你这样分隔看 A左连接B 可以认为是A、B表组成的一个临时表t_AB
这个临时表t_AB又与C表 进行左连接 A、B、C三张表组成一个临时表t_ABC,然后t_ABC再与D表连接查询。
你可以类似三元表达式
int x=5;
int y=x>6?x:(x>4?1:0));
即时是多表连接查询 你也可以看作是两表查询后 再和其他表查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主问的意思,应该是从性能上面考虑!我记得在哪看过,连接应该把较小的表放在前面!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询