SQL Server如何实现从两个子查询的左连接中查询数据?

maverick432 2016-11-14 03:11:38
我的思路是在表t1和t2中分别查询,将结果做左连接,取出连接后结果的其中一列或几列作为最终结果。写出了形如以下的查询,在Oracle中可以正常执行,但在SQL Server中会报错,该如何实现?

select a, r1 from
(select id as a from t1)
left join
(select id as b, t3.value as r1 from t2, t3 where .....)
on t1.id = t2.id;

错误信息:
消息 156,级别 15,状态 1,第 3 行
关键字 'left' 附近有语法错误。
消息 156,级别 15,状态 1,第 5 行
关键字 'on' 附近有语法错误。

SQL Server只能使用 “表名 left join 表名” 的格式吗?这样倒是能查询,但这样写会不会速度太慢?因为原查询的两个子查询还加了很多条件限制,都加在on的条件里吗?
select t1.id, t2.value from t1 left join t2 on t1.id = t2.id;


而且我原来写的查询的第二个子查询是从两个表查的,应该如何于第一个表做左连接
...全文
758 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
select a, r1 from (select id as a from t1)AS T1 left join (select id as b, t3.value as r1 from t2, t3 where .....)AS T2 on t1.a = t2.b; 你都as a ,b了后面on 应该是.a 和.b
zhangxiaoyu138 2016-11-14
  • 打赏
  • 举报
回复
这sql在oreacle里面可以执行我是不理解的。你把最后on后面的t1跟t2改一下就行了 给上面的子表取个别名
卖水果的net 版主 2016-11-14
  • 打赏
  • 举报
回复
子查询要取别名的;
--小F-- 2016-11-14
  • 打赏
  • 举报
回复
select a, r1 from (select id as a from t1) as t1 left join (select id as b, t3.value as r1 from t2, t3 where .....) as t2 on t1.id = t2.id;
责任after自由 2016-11-14
  • 打赏
  • 举报
回复
兄弟,告诉你解决的方法-->‘学习一下SQL Server 几种join使用方法’你不仅可以解答还会有另外的收获哟!

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧