已知:t_a中有字段userId,t_b表中有userId、userName
需求:我想找出t_a,t_b表中公共的用戶的名稱
說明:我用useFlag字段判斷用戶是否有效
//查詢方式一
sql
select ta.userId,tb.userName from t_a ta left join t_b tb on ta.userId=tb.userId and tb.useFlag = 1
//查詢方式二
code
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
若是採起方式一查詢,得出的結果是
class
userId userName 1000000001 null
採起方式二查詢獲得的結果是
select
userId userName null null
個人業務需求是
若是取回來了userId,那就說明userName是有值的(這裏假設userName非空)
若是採起方式一查詢,很明顯不對。
備註:之前寫SQL的時候,當查詢的兩張表中有公共字段須要被查出來時,我是隨便用哪張表.公有字段查詢出來的。現在看來,取公有返回字段的時候,最好是考慮下應該取那種表的字段更加準確些。
查詢