我无法找到解决方案。也许还因为它有点难以解释。
我用key1获得了table1。 我用key2得到了table2,value1。
我的陈述:
Select * From table1 As t1
Left Join table2 As t2 On t2.key2 = t1.key1
Where t2.value1 Is Null Or t2.value1 > 123;
现在我在table1中有一些key1,但在table2中没有相应的key2。因为我在结果中没有那些键,但我需要它们。如果键不在table2中,则value1遗憾地不为null。我可以在那里查看一些“价值”吗?
答案 0 :(得分:2)
通常情况下,left join
上的条件会出现在on
子句中。
我怀疑你想要:
Select *
From table1 t1 Left Join
table2 t2
On t2.key2 = t1.key1 and t2.value1 > 123;
这将从t1
返回table2
的所有行以及匹配的行(如果有的话)。
您的版本将返回table1
的所有行,其中有匹配的行value1 > 123
或根本没有匹配的行。换句话说,它会过滤掉table1
中的行,其中table2
中的所有值都是<= 123
。这仅在极少数情况下有用。
答案 1 :(得分:-1)
尝试以下查询并检查
Select * From table1 As t1 INNER JOIN table2 As t2 On t2.key2 = t1.key1 Where t2.value1 Is NULL Or t2.value1 > 123;
它应该适用于你的逻辑