select t.*, a.* from employees t left join (select * from departments where 4=depid ) a on t.delflag = a.delflag where t.depid = 4 or t.depid is null 4=depid 不是和employees 关联的条件,最好不要写在一起 另外,t.delflag = a.delflag这个条件有点搞了
只是建议的写法,谈不到应该 ------------------------------ 一个例子应该可以看出来 test_abc a 1 2 3select * from test_abc a, (select 1 a from dual) b where a.a(+)=b.a --left join (id=4) 结果 1 1 select * from test_abc a, (select 1 a from dual) b where a.a=b.a (+) --left join (4=id) 结果 1 1 2 3
SQL2中,4=a.depid 4是右,a.depid是左
left join
(select * from departments where 4=depid ) a
on
t.delflag = a.delflag
where t.depid = 4 or t.depid is null 4=depid 不是和employees 关联的条件,最好不要写在一起
另外,t.delflag = a.delflag这个条件有点搞了
这个是我为了测试加上去的代码
因为项目中,整段sql比较复杂,所以就随便造了一个
你的意思,是不是红色部分的条件跟T表无关,所以不应该写在on后面??
------------------------------
一个例子应该可以看出来
test_abc
a
1
2
3select * from test_abc a,
(select 1 a from dual) b
where a.a(+)=b.a --left join (id=4)
结果
1 1 select * from test_abc a,
(select 1 a from dual) b
where a.a=b.a (+) --left join (4=id)
结果
1 1
2
3