我正准备将两张桌子连在一起,这是我加入的所有内容:
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
答案 0 :(得分:2)
使用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)
来自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'