SQL --几张表公有字段的查询

已知:t_a中有字段userId,t_b表中有userId、userName
需求:我想找出t_a,t_b表中公共的用户的名称
说明:我用useFlag字段判断用户是否有效
//查询方式一

select ta.userId,tb.userName 
from t_a ta
left join t_b tb
on ta.userId=tb.userId
and tb.useFlag = 1

//查询方式二

select tb.userId,tb.userName 
from t_a ta
left join t_b tb
on ta.userId=tb.userId
and tb.useFlag = 1

解析:如上两种查询方式唯一的区别点就在于ta.userId与tb.userId
现在假设:
1.t_a表中有userId=1000000001
2.t_b表中有userId=1000000001,且useFlag = 0
如果采取方式一查询,得出的结果是

userId       userName
1000000001   null

采取方式二查询得到的结果是

userId       userName
null         null

我的业务需求是
如果取回来了userId,那就说明userName是有值的(这里假设userName非空)
如果采取方式一查询,很明显不对。
备注:以前写SQL的时候,当查询的两张表中有公共字段需要被查出来时,我是随便用哪张表.公有字段查询出来的。如今看来,取公有返回字段的时候,最好是考虑下应该取那种表的字段更加准确些。

转载于:https://my.oschina.net/u/2312022/blog/540373

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值