sql 多表查詢
阿新 • • 發佈:2019-01-24
1.不適用left join 和right join :這種情況最好是你的外來鍵不是為空,如果外來鍵為空並且使用多表查詢,那麼可能沒有資料。至於為什麼,沒有深究。舉例;
使用者表 交易表
使用者可能註冊了有資訊了,但是未必使用者就一定成交。如果這是在使用上面這種情況,必然出現沒有資料的查詢結果。
sql: select t1.* t2.* from user as t1, agreement as t2 where t1.comId = t2.comId;
2.但是你的一個表的外來鍵可能是空的時候,那麼就要考慮使用左外連線和右外連線了。
sql: select t1.*,t2.* from user as t1 left join agreement as t2 on t1.commId=t2.commId where。。。。。。;
左外連線保證的是左邊的表中資料全部查出,而不管右邊表中的資料是否存在。
n:等值連線,用來查詢多表相同欄位的記錄
Not In:非等值連線,用來查詢不存在的記錄
Inner join:內連線,主要用來查詢都符合條件的記錄
Left join:左連線,主要用來查詢左邊有,右邊沒有的用空值表達
Right join:右連線,主要用來查詢右邊有,左邊沒有的用空值表達
Order By:升序 Asc 降序 Desc
Group By:分組排序 按欄位分組(如按班級分),使用的都要有集合函式存在
Having:對分組條件進行判斷,使用都要確保每個欄位都要用集合函式