sql server关于left join的记录
2016-04-08 10:30
459 查看
现有approve和projectReg两张表,没有物理外键。
approve: businessCode, type
projectReg: projectId
不报错
更有意思的是:
总结:
仅仅尝试了sql server
1.网上关于on和where条件是先生成临时表再用where去过滤的情况,在sql server中是不成立的。
2.关于对主表的条件过滤,应该放到where中
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将过滤被连接的表的条件放到where中,同样不报错
-- and b.type=5
where b.type=5
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.projectRegIdand a.type=5居然也不报错,很无奈啊!!!!
where a.type=5
总结:
仅仅尝试了sql server
1.网上关于on和where条件是先生成临时表再用where去过滤的情况,在sql server中是不成立的。
2.关于对主表的条件过滤,应该放到where中
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- Seafile Server本地权限提升漏洞(CVE-2014-5443)
- 从USB安装Ubuntu Server 10.04.3 图文详解
- SQL Server 语句操纵数据库
- SQL(结构化查询语句)
- oracle sql日期比较
- 使用zabbix监控Nginx活动状态--Part1
- 高效访问Internet-启用ISA Server的缓存
- linux快速部署mysql服务器
- windows server域用户提升到本地更高权限组中的方法
- 完美解决SQL Server 安装问题:以前的某个程序安装已在安装计算机上创建挂起的文件操作
- sql 存储过程分页
- IIS 错误 Server Application Error 详细解决方法
- 在WINXP系统上安装SQL Server企业版的方法