第二行是外连接的连接条件的一部分 因为是t1表左连接t2表 作为连接条件,t2中的条件必须加(+) 否则不会被当做连接条件处理用这种写法比较容易理解 select * from t1 left join t2 on t1.id=t2.id and t2.code='%s't2.code的值就是'%s'还是希望模糊匹配?如果是要匹配的话将=改成 like
也就是说第一行的(+)表示了这是一个左外连接 第二行的(+)表示这也是连接条件,因为这种情况是含有%s(即只有等号的一侧是数据库的列), 如果换成其他的条件是不是必需这么写?and t1.ID = t2.ID(+) and t1.CODE = t2.CODE(+)而下面这种写法必然是不对的?(因为写在左侧表示的是右外连接) and t1.ID = t2.ID(+) and t1.CODE(+) = t2.CODE ON的条件只能紧跟着放在from table后面么? 可否放在where子句中?
and t1.ID = t2.ID(+) and t1.CODE(+) = t2.CODE 这个有逻辑错误,不能执行,因为第一行是左连接,到第二行变成右连接了。可以改成 and t1.ID = t2.ID(+) and t2.CODE(+) = t1.CODE on条件跟在join后面,是join语句的一部分 如果还有where,可以放在on子句后面,作为对连接结果的过滤条件select * from t1 left join t2 on t1.id=t2.id and t2.code='%s' where t2.code is not null
因为是t1表左连接t2表
作为连接条件,t2中的条件必须加(+)
否则不会被当做连接条件处理用这种写法比较容易理解
select * from t1 left join t2
on t1.id=t2.id and t2.code='%s't2.code的值就是'%s'还是希望模糊匹配?如果是要匹配的话将=改成 like
第二行的(+)表示这也是连接条件,因为这种情况是含有%s(即只有等号的一侧是数据库的列),
如果换成其他的条件是不是必需这么写?and t1.ID = t2.ID(+)
and t1.CODE = t2.CODE(+)而下面这种写法必然是不对的?(因为写在左侧表示的是右外连接)
and t1.ID = t2.ID(+)
and t1.CODE(+) = t2.CODE
ON的条件只能紧跟着放在from table后面么?
可否放在where子句中?
and t1.CODE(+) = t2.CODE
这个有逻辑错误,不能执行,因为第一行是左连接,到第二行变成右连接了。可以改成
and t1.ID = t2.ID(+)
and t2.CODE(+) = t1.CODE on条件跟在join后面,是join语句的一部分
如果还有where,可以放在on子句后面,作为对连接结果的过滤条件select * from t1 left join t2
on t1.id=t2.id and t2.code='%s'
where t2.code is not null