我在三個字段中加入兩個表。我遇到的問題是如果a.baz不在b.baz中,我需要使用表b中的默認行。問題是有些會在b中有一個匹配,但也有一個默認值,並導致我不想要的交叉產品。加入默認值但不想交叉產品
select a.foo, a.bar, a.baz, b.fee, b.fie
from a
join b
on a.foo = b.foo
and a.bar = b.bar
and ((a.baz = b.baz) or b.baz = 'DEFAULT')
電流輸出:
foo bar baz fee fie
bob doe NYC 500 200
bob doe DEFUALT 100 100
john doe DEFAULT 100 100
jane doe NYC 500 500
期望的輸出:
foo bar baz fee fie
bob doe NYC 500 200
john doe DEFAULT 100 100
jane doe NYC 500 500
樣本數據:
a: foo bar baz bob doe NYC john doe NYC jane doe NYC
b: foo bar baz fee fie bob doe NYC 500 200 bob doe DEFAULT 100 100 john doe CHI 300 200 john doe DEFAULT 100 100 jane doe NYC 500 100
你能顯示錶中的一些示例數據嗎? –
添加了一些示例數據。 – SparkeyG
你得到的結果不是交叉產品。我想你的當前輸出是正確的,有問題的條件。 –