approve: businessCode, type
projectReg: projectId
select *
from projectReg a LEFT JOIN approve b
on a.projectRegId = b.businessCode
select *
from approve a LEFT JOIN projectReg b
on a.businessCode=b.projectRegId
都會報錯:[Err] 22018 - [SQL Server]在將 varchar 值 '3ad045bd10c1482d962ec944bca21056' 轉換成數據類型 int 時失敗。
select *
from projectReg a LEFT JOIN approve b
on a.projectRegId = b.businessCode and b.type=5
不報錯
select *
from projectReg a LEFT JOIN approve b
on a.projectRegId = b.businessCode
-- and b.type=5
where b.type=5
將過濾被連接的表的條件放到where中,同樣不報錯select *
from approve a LEFT JOIN projectReg b
on a.businessCode=b.projectRegId and a.type=5
報錯:[Err] 22018 - [SQL Server]在將 varchar 值 '3ad045bd10c1482d962ec944bca21056' 轉換成數據類型 int 時失敗。
select *
from approve a LEFT JOIN projectReg b
on a.businessCode=b.projectRegId
-- and a.type=5
where a.type=5
這樣也不報錯
更有意思的是:
select *
from approve a LEFT JOIN projectReg b
on a.businessCode=b.projectRegId
and a.type=5
where a.type=5
居然也不報錯,很無奈啊!!!!總結:
僅僅嘗試了sql server
1.網上關於on和where條件是先生成臨時表再用where去過濾的情況,在sql server中是不成立的。
2.關於對主表的條件過濾,應該放到where中