[转]sql 左右连接 on 条件注意事项
2011-03-20 22:49
330 查看
select * FROM View_VehicleContractInfo vci WITH(NOLOCK)
LEFT JOIN AuctionVehicle av WITH(NOLOCK)
ON vci.VehicleContractID = av.VehicleContractID
AND av.AuctionID = (SELECT MAX(AuctionVehicle.AuctionID) FROM AuctionVehicle WHERE AuctionVehicle.VehicleContractID IN ('+@VehicleCode+'))
LEFT JOIN View_VehicleServiceInfo AS VS
ON vci.VehicleCode = VS.VehicleCode
AND VS.ServiceCustomerTypeCode=''S''
AND VS.ServiceSettlePrice<>0 and VS.auctionid=av.auctionid
LEFT JOIN StoreManagement AS SM ON vci.VehicleCode = SM.GPcode
WHERE vci.VehicleContractID IN ('+@VehicleCode+')
例如上面的代码 在左右连接的时候如果没有值则用null代替,这就使得on下和连接无关的条件失效
如 1. AND VS.ServiceCustomerTypeCode=''S''
2. av.AuctionID = (SELECT MAX(AuctionVehicle.AuctionID) FROM AuctionVehicle WHERE AuctionVehicle.VehicleContractID IN ('+@VehicleCode+'))
3. AND VS.ServiceSettlePrice<>0
这三条和连接无关,只是一些过滤的条件,所以一定要加到 where里而不是放到on里
innner join的时候因为是严格的连接,所以on里放一些过滤条件是不会被忽略的。
转自:http://beijiguang-fred.blog.sohu.com/153417642.html
LEFT JOIN AuctionVehicle av WITH(NOLOCK)
ON vci.VehicleContractID = av.VehicleContractID
AND av.AuctionID = (SELECT MAX(AuctionVehicle.AuctionID) FROM AuctionVehicle WHERE AuctionVehicle.VehicleContractID IN ('+@VehicleCode+'))
LEFT JOIN View_VehicleServiceInfo AS VS
ON vci.VehicleCode = VS.VehicleCode
AND VS.ServiceCustomerTypeCode=''S''
AND VS.ServiceSettlePrice<>0 and VS.auctionid=av.auctionid
LEFT JOIN StoreManagement AS SM ON vci.VehicleCode = SM.GPcode
WHERE vci.VehicleContractID IN ('+@VehicleCode+')
例如上面的代码 在左右连接的时候如果没有值则用null代替,这就使得on下和连接无关的条件失效
如 1. AND VS.ServiceCustomerTypeCode=''S''
2. av.AuctionID = (SELECT MAX(AuctionVehicle.AuctionID) FROM AuctionVehicle WHERE AuctionVehicle.VehicleContractID IN ('+@VehicleCode+'))
3. AND VS.ServiceSettlePrice<>0
这三条和连接无关,只是一些过滤的条件,所以一定要加到 where里而不是放到on里
innner join的时候因为是严格的连接,所以on里放一些过滤条件是不会被忽略的。
转自:http://beijiguang-fred.blog.sohu.com/153417642.html
相关文章推荐
- SQL有外连接的时候注意过滤条件位置否则会导致网页慢
- 转:SQL:外连接on条件与where条件的区别
- win64位系统-----PL\SQL连接Oracle数据库的注意事项
- SQL左右连接中的on and和on where的区别
- T-SQL注意事项(1)——SET NOCOUNT ON的去与留
- 外连接 ON 条件的三个作用 SQL中on条件与where条件的区别
- SQL左右连接中的on and和on where区别
- SQL左右连接中的on and和on where的区别
- 外连接 ON 条件的三个作用 SQL中on条件与where条件的区别
- T-SQL注意事项(1)——SET NOCOUNT ON的去与留
- SQL左右连接中的on and和on where的区别
- T-SQL注意事项(1)——SET NOCOUNT ON的去与留
- T-SQL注意事项(1)——SET NOCOUNT ON的去与留
- sql 左右连接 on 之后的and 和where的区别
- sql中多表连接中需要注意的事项
- 数据库连接时的查询条件注意事项
- SQL左右连接中的on and和on where的区别
- SQL左右连接中的on and和on where的区别
- 转!!SQL左右连接中的on and和on where的区别
- pl/sql developer连接oracle数据注意事项