我有两张表表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,如何解决这个问题?
答案 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