数据库中两张表的各种连接方法

来源:互联网 发布:软件评测师招聘 编辑:程序博客网 时间:2024/05/17 22:14

今天遇到了如下的问题,在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语句中最基础的一个问题,哎!

那就总结一下吧:

 

cross join:是笛卡儿乘积,在没有任何条件约束下就是一张表的行数乘以别一张表的行数。
left join:返回“表名1”的全部行,对于“表名2”中,不满足on条件的记录用空值替换。
rigth
join:返回“表名2”的全部行,对于“表名1”中,不满足on条件的记录用空值替换。
full join:返回两张表中的所有记录,对于不满足on条件一端的记录用空值替换。
inner jon:只返回两张表中都满足on条件的记录