【SQL】在SQL Server中多表关联查询问题

好久没有写SQL语句的多表连接查询,总在用框架进行持久化操作。今天写了一个多表关联查询,想根据两个字段唯一确定一条数据

 

失败的案例如下:

SELECT cyb.id,ad.name 
FROM [GeneShop].[dbo].[t_member_cyb] cyb ,[GeneShop].[dbo].xx_admin ad,[GeneShop].[dbo].t_bg bg
where cyb.hzjg_id = ad.id  and cyb.id = bg.cyb_id 
and 
(cyb.cybbm = 402045 and bg.product_id = 121)
or(cyb.cybbm = 402070 and bg.product_id = 118)

查询出来的效果,简直不忍直视。

 

被改良后,使用join on 【inner join on】关联多表查询

select cyb.id, xa.name 
from GeneShop.dbo.t_member_cyb cyb 
join GeneShop.dbo.xx_admin xa  on xa.id = cyb.hzjg_id 
join GeneShop.dbo.t_bg bg  on bg.cyb_id = cyb.id 
where (cyb.cybbm=402045 and bg.product_id = 121) or (cyb.cybbm=402070 and bg.product_id = 118)

 

综上,其实

select 字段1,字段2 from 表1,表2 where 表1.字段 = 表2.字段 and 条件

select 字段1,字段2 from 表1 join 表2  on 表1.字段 = 表2.字段 where 条件

两个表这样关联查询是没有问题的。

但是多个表的话,可以看出来差距非常的大。

 

-----------------------------------------------------------------------------------------------割掉-----------------------------------------------------------------------------------------------

看来SQL得重新好好的温习温习,真是糊涂。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值