选择使用LEFT OUTER JOIN和条件

时间:2014-12-26 06:26:13

标签: sql sql-server

我有两张表表A 表B

表A

1. *id*
2. *name*

表B

1. *A.id*
2. *datetime*

我想选择

1. *A.id*
2. *A.name*
3. *B.datetime*

即使表B在特定日期不包含 A.id 的行,也应该用 NULL 替换该列

例如

表A 包含

1. *(1 , Haris)*
2. *(2, Hashsim)*

表B 包含今天的日期。

1. *(1, '2014-12-26 08:00:00')*

我应该显示2个ID为 1 2 的结果,而不是仅显示id 1

在WHERE子句中使用LEFT OUTER JOIN使其成为LEFT INNER JOIN,如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

SELECT A.id, A.name, b.datetime
FROM A
LEFT Outer JOIN B on B.id = A.id

答案 1 :(得分:0)

SELECT a.id, a.name, b.datetime
FROM A
LEFT JOIN B on B.aid = a.id
WHERE coalesce(B.datetie, '1900-01-01') < @MyDateTime

答案 2 :(得分:0)

使用LEFT OUTER JOIN获取Left table的所有行,而没有匹配的行将NULL列中包含Right table个值

SELECT A.id,
       A.name,
       B.[datetime]
FROM   tableA A
       LEFT OUTER JOIN tableB B
                    ON A.Id = B.id
                       AND B.[datetime] < @date 

答案 3 :(得分:0)

Select A.id,A.name,B.datetime 
from tableA A 
Left join
(
   SELECT B.ID,B.datetime 
   FROM tableB B
   WHERE B.datetime <= 'myDateTime'
)B
ON A.aid = B.id
相关问题