查询和空

时间:2014-12-04 19:20:33

标签: sql sql-server

我正准备将两张桌子连在一起,这是我加入的所有内容:

SELECT TABLE1.NM, TABLE2.CD
from TABLE1 FULL JOIN TABLE2 ON TABLE1.ID = TABLE2.PID
WHERE (TABLE2.CD = 'P1' or TABLE2.CD is null)

这是我的问题。如果TABLE2没有CD =“P1”的记录,那么它不会显示TABLE1中该匹配的任何记录。我错过了什么?

感谢您的帮助。

这是使用MS SQL Server 2008

3 个答案:

答案 0 :(得分:2)

尝试LEFT JOIN

  

使用LEFT JOIN操作创建左外连接。左外   连接包括来自两个表的第一个(左)的所有记录,   即使第二个(右)中的记录没有匹配值   表

SELECT TABLE1.NM, TABLE2.CD
from STU LEFT JOIN CON ON TABLE1.ID = TABLE2.PID
WHERE (TABLE2.CD = 'P1' or TABLE2.CD is null)

enter image description here

来自http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

的图片

答案 1 :(得分:2)

尝试使用LEFT JOIN并将条件放入ON子句而不是WHERE子句

SELECT TABLE1.NM, ISNULL(TABLE2.CD,'')
from TABLE1
LEFT JOIN TABLE2 ON TABLE1.ID = TABLE2.PID AND TABLE2.CD = 'P1'

答案 2 :(得分:0)

试试这个

SELECT TABLE1.NM, TABLE2.CD
from STU FULL LEFT JOIN CON ON TABLE1.ID = TABLE2.PID
WHERE TABLE2.CD = 'P1'