SQL使用一个表上的where子句连接两个表

SQL使用一个表上的where子句连接两个表,sql,join,Sql,Join,我有两张桌子,如下所示 table1 main_id main_val main_sub main_pk 1 A NULL 3 3 A 1 3 table2 col_id col_val 1 A select table1.main_pk from table1 ,table2 WHERE table1.main_id = table2.col_id and table1.main_val

我有两张桌子,如下所示

table1
main_id main_val main_sub main_pk
1             A   NULL     3
3             A    1       3

table2

col_id  col_val
1           A

select table1.main_pk from table1 ,table2 WHERE
table1.main_id = table2.col_id
and table1.main_val = table2.col_val
and table1.main_sub = null

我希望上面的查询选择表1中的第一行,因为main_sub为null,其他两列匹配。但事实并非如此。我只是在学习SQL基础知识,所以我不确定哪里出了问题。请帮助

我不完全理解这个问题,但我认为这就是你想要的:

SELECT * from table1 INNER JOIN table2 on table1.main_val=table2.main_val WHERE table1.main_sub IS NULL

如果不是的话,我认为它会引导您走上正确的道路

SQL对于
NULL
值来说有点奇怪。使用条件

....
table1.main_sub IS NULL

用于测试空值。这个想法是NULL应该被解释为无,所以
无-等于-无
永远不可能是真的,因为你不能比较不存在的东西。

可能重复的是-这里的关键是使用
为NULL
而不是比较
NULL
来表示相等,这不管用,事实上我知道。我真不敢相信我竟然忽略了它。谢谢大家。。。