我对LEFT JOIN的尝试没有产生预期的结果。有任何想法吗?

时间:2013-07-08 20:04:49

标签: sql sql-server-2008 sql-server-2005

我正在为脑死亡而严重受伤,因为我过去曾多次成功地做过这件事。

这一次,它无法正常工作。

我有2个表,tableA和tableB

TableA拥有所有的surmons记录

TableB有一些但并非所有的戒律。

他们之间的共同关键是surmonId。

要求是显示tableB中的surmons,其中tableA和tableB之间存在匹配,但同时显示来自tableA的所有surmons。

换句话说,从tableB给我任何存在的记录和tableA上的所有记录。

下面的lef联接查询只给出了tableB中存在的记录。

Select distinct l.surmons from tableB b left join tableA a on b.surmonId = a.surmonId.

桌子上只有10个人,这就是我所得到的。

我在哪里弄乱?

提前多多感谢

2 个答案:

答案 0 :(得分:3)

切换表格的顺序:

SELECT DISTINCT a.surmons 
FROM tableA a 
LEFT JOIN tableB b 
   ON a.surmonId = b.surmonId 

或者使用我最喜欢的RIGHT JOIN

SELECT DISTINCT a.surmons 
FROM tableB b 
RIGHT JOIN tableA a 
   ON b.surmonId = a.surmonId

答案 1 :(得分:1)

如果你想要tableA中的所有内容,你需要从tableA到tableB进行左连接。

Select distinct a.surmons from tableA a left join tableB b on a.surmonId = b.surmonId