左连接 怎么进行过滤

eFainter 2008-03-24 05:08:50
SELECT A.*, B.BMMC FROM A LEFT JOIN B ON A.YWZT = 1 AND A.DWID = B.DWID
这样查询出来的记录就等于A的记录数,相当于A.YWZT = 1这个条件没有起作用,请问LEFT连接能不能把A表进行相应的过滤呢?
...全文
239 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
viva369 2008-03-24
  • 打赏
  • 举报
回复
select m.* , b.bmmc from
(
select * from A where ywzt = 1
) m
left join b
on m.dwid = b.dwid
--
SELECT A.*, B.BMMC FROM A LEFT JOIN B ON A.DWID = B.DWID where A.YWZT = 1
---------
感觉2个执行计划是一样的。。。
dawugui 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
最好写成这样:
select m.* , b.bmmc from
(
select * from A where ywzt = 1
) m
left join b
on m.dwid = b.dwid
[/Quote]
如果是多个表最好写成这样.
如果只有两个表写成我一楼的形式.
viva369 2008-03-24
  • 打赏
  • 举报
回复
写在where 后面
--
加在left join 则表示,连接的时候只连接A.YWZT = 1 的,其余的都显示为null,因为你采用的是左连接
dawugui 2008-03-24
  • 打赏
  • 举报
回复
最好写成这样:
select m.* , b.bmmc from
(
select * from A where ywzt = 1
) m
left join b
on m.dwid = b.dwid
dawugui 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 eFainter 的帖子:]
SELECT A.*, B.BMMC FROM A LEFT JOIN B ON A.YWZT = 1 AND A.DWID = B.DWID
这样查询出来的记录就等于A的记录数,相当于A.YWZT = 1这个条件没有起作用,请问LEFT连接能不能把A表进行相应的过滤呢?
[/Quote]
SELECT A.*, B.BMMC FROM A LEFT JOIN B ON A.DWID = B.DWID where A.YWZT = 1 

34,576

社区成员

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

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