SQL连接查询AND和WHERE的不同
2008-09-19 11:15
399 查看
如下两张表:
表A 表B
--- ---
F F
--- ---
A A
B B
C F
D G
E H
--- ---
WHERE:
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F
WHERE A.F = 'A'
-----------
FA FB
-----------
A A
-----------
AND:
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F
AND A.F = 'A'
------------
FA FB
------------
A A
B null
C null
D null
E null
------------
可以看出使用 WHERE 条件会筛选连接查询的结果,但不影响返回的右表字段值;
使用 AND 不会对结果进行筛选,结果一定是包含了所有的左表记录,但是会影响
返回的右表字段值,如果 ON 后面的逻辑判断返回 true 显示右表值,为 false 则显示 null。
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F AND 1 = 1
FA FB
------------
A A
B B
C null
D null
E null
------------
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F AND 1 = 2
FA FB
------------
A null
B null
C null
D null
E null
------------
如果是 INNER JOIN, WHERE 和 AND 效果相同。
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A INNER JOIN dbo.B ON dbo.A.F = dbo.B.F
WHERE A.F = 'A' / AND A.F = 'A'
-----------
FA FB
-----------
A A
-----------
表A 表B
--- ---
F F
--- ---
A A
B B
C F
D G
E H
--- ---
WHERE:
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F
WHERE A.F = 'A'
-----------
FA FB
-----------
A A
-----------
AND:
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F
AND A.F = 'A'
------------
FA FB
------------
A A
B null
C null
D null
E null
------------
可以看出使用 WHERE 条件会筛选连接查询的结果,但不影响返回的右表字段值;
使用 AND 不会对结果进行筛选,结果一定是包含了所有的左表记录,但是会影响
返回的右表字段值,如果 ON 后面的逻辑判断返回 true 显示右表值,为 false 则显示 null。
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F AND 1 = 1
FA FB
------------
A A
B B
C null
D null
E null
------------
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.F = dbo.B.F AND 1 = 2
FA FB
------------
A null
B null
C null
D null
E null
------------
如果是 INNER JOIN, WHERE 和 AND 效果相同。
SELECT A.F AS FA, dbo.B.F AS FB
FROM dbo.A INNER JOIN dbo.B ON dbo.A.F = dbo.B.F
WHERE A.F = 'A' / AND A.F = 'A'
-----------
FA FB
-----------
A A
-----------
相关文章推荐
- sql 左连接查询条件and与where
- SQL左右连接中的on and和on where的区别
- sql连接查询中,where关键字的位置讲解
- sql连接查询中on筛选与where筛选的区别
- 连接查询中on and和on where的区别
- 记录SQL查询左连接,和Where的一次坑
- sql连接查询中on筛选与where筛选的区别
- SQL左右连接中的on and和on where的区别
- sql连接查询中on筛选与where筛选的区别 推荐
- SQL左右连接中的on and和on where的区别
- SQL左右连接中的on and和on where的区别
- sql连接查询语句中on、where筛选的区别总结
- sql连接查询中on筛选与where筛选的区别
- SQL左右连接中的on and和on where的区别
- Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
- Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
- SQL使用OUTER JOIN查询,使用WHERE与AND的区别。
- sql连接查询中,where关键字的位置讲解
- SQL查询连接不同数据库的表
- sql 左右连接 on 之后的and 和where的区别