1. 程式人生 > >資料庫中兩張表的各種連線方法

資料庫中兩張表的各種連線方法

今天遇到了如下的問題,在CSDN上提問 

查詢語句如下:
SELECT
A.CameraID,  A.CryptMode,  A.CameraName,  B.CameraID AS LeftCameraID
FROM
C001_Camera A  LEFT JOIN  C002_Control B
ON
B.CameraID=A.CameraID
WHERE
(A.ControlerID IS NOT NULL AND A.ControlerID != '')
ORDER BY
CAST(A.CameraID as SIGNED INTEGER)

結果中
A.CameraID為00006,
LeftCameraID為null
可是在上面不是有B.CameraID=A.CameraID一句了嗎?怎麼他們兩個的值不一樣呀?

問題解決後我才知道這是SQL語句中最基礎的一個問題,哎!

那就總結一下吧:

crossjoin:是笛卡兒乘積,在沒有任何條件約束下就是一張表的行數乘以別一張表的行數。
leftjoin:返回“表名1”的全部行,對於“表名2”中,不滿足on條件的記錄用空值替換。
rigth
join:返回“表名2”的全部行,對於“表名1”中,不滿足on條件的記錄用空值替換。
fulljoin:返回兩張表中的所有記錄,對於不滿足on條件一端的記錄用空值替換。
inner jon:只返回兩張表中都滿足on條件的記錄