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的时候,当查询的两张表中有公共字段需要被查出来时,我是随便用哪张表.公有字段查询出来的。如今看来,取公有返回字段的时候,最好是考虑下应该取那种表的字段更加准确些。

你可能感兴趣的:(SQL --几张表公有字段的查询)