我正在 mssql 中编写以下存储过程。
foo 和 bar 列在 table1 中,id 在 table2 中。
select foo, bar, id from table1
join table2 on table2.foo = foo.foo
我的问题是,如果只有 foo 和 bar 的数据,我希望它返回
a, b, 空
但是,如果 id 不存在但 foo 和 bar 存在,它根本不会返回一行。
有没有一种优雅的方式来完成这项工作?
我正在 mssql 中编写以下存储过程。
foo 和 bar 列在 table1 中,id 在 table2 中。
select foo, bar, id from table1
join table2 on table2.foo = foo.foo
我的问题是,如果只有 foo 和 bar 的数据,我希望它返回
a, b, 空
但是,如果 id 不存在但 foo 和 bar 存在,它根本不会返回一行。
有没有一种优雅的方式来完成这项工作?
这应该可以解决您的问题:
SELECT foo, bar, id FROM table1
OUTER JOIN table2 on table2.foo = foo.foo
我想你正在寻找一个FULL OUTER JOIN
查询
SELECT a.foo, a.bar, a.id
FROM table1 a
FULL OUTER JOIN table2 b
ON a.foo = b.foo
您可以查看此连接的可视化解释