SQL在一个表上连接两个表和一个where子句的SQL

时间:2017-08-25 14:48:36

标签: 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 = table2.col_val
and table1.main_sub = null

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

....
table1.main_sub IS NULL

专门用于测试null。我的想法是NULL应该被解释为空,所以nothing -equals- nothing不可能是真的,因为你无法比较不存在的东西。