我有以下SQL Statment
Select
a.A,
a.B,
b.C
FROM table a
INNER JOIN table b
on (a.A = b.A)
WHERE a.A = @A
我的问题是,当表b中没有A匹配表a中的A时,所有A,B C都不会显示。只有在满足a.A = b.A.的值时才有效。即使不符合a.A = b.A.我怎么能得到所有的A,B和C.我试图使用IF语句,这显然不起作用。谢谢。
答案 0 :(得分:1)
SELECT
a.A,
a.B,
b.C
FROM table_a a
LEFT JOIN table_b b
ON (a.A = b.A)
WHERE a.A = @A
当然,如果加入条件不匹配,您将无法从b.C获得任何内容但是您将获得表格中的所有行
如果你真的想要table_a和table_b中的所有行,请使用FULL OUTER JOIN。
答案 1 :(得分:0)
使用LEFT JOIN将从左表(table_a here)获取所有内容,如果右表(table_b here)中有匹配的记录(由JOIN标准规定),则返回该表中的数据。如果左表中的记录右表中没有相应的记录,那么对于您从右表中选择的那些列,将返回NULL。
SELECT
a.A,
a.B,
ISNULL(b.C, 'No Match In table_b')
FROM table_a a
LEFT JOIN table_b b
ON (a.A = b.A)
WHERE a.A = @A