对不起,我真的不知道使用什么关键字来为我的问题寻求帮助。
我正在构建一个关于 SQL 的视图,以便在其他具有自身过滤功能的软件中使用。我想将视图用于多个目的,所以我有一些非正统的想法:
最初,我想 LEFT OUTER JOIN 两个表。但是:即使 SQL 找到匹配项,我也想要一条额外的记录,但无论如何都没有 Right 表中的数据。这是一个例子:
t1:
pk data
1 a
2 b
3 c
t2:
pk fk data
1 a line1
2 a line2
3 c line3
4 c line4
5 c line5
这是我目前得到的:查询:
select t1.data, t2.data from t1 left outer join t2 on t1.data = t2.fk
返回:
t1.data t2.data
a line1
a line2
b <NULL>
c line3
c line4
c line5
我真正想要返回的内容:
t1.data t2.data
a <NULL>
a line1
a line2
b <NULL>
c <NULL>
c line3
c line4
c line5
我想要这个结果的原因是我可以在其他软件中使用视图并只过滤 t2.data = NULL 的记录
有谁知道我该怎么做?我不想手动加入该软件,因为它的性能低效到最终用户无法承受的程度。
感谢您的帮助。
PS我想过用一个完全外部连接一个不匹配的top(1)选择的子选择替换右表,但我不知道如何正确地做到这一点:-/