我有两个表容器,卖
容器
--------------------------------------
| cont_id | cont_no | cont_condition |
--------------------------------------
| 1 | A50 | blaaablabla |
| 2 | A51 | blaaablabla |
| 3 | J82 | blaaablabla |
| 4 | S71 | blaaablabla |
--------------------------------------
卖
--------------------------------------
| sell_id | cont_no | cont_condition |
--------------------------------------
| 1 | A50 | blaaablabla |
| 2 | A51 | blaaablabla |
--------------------------------------
现在我想从容器表中选择不包含在卖表中的cont_no(A50和A51 SOLD过滤它们并且必须显示剩余的容器)
例如:期待像这样的输出
容器
--------------------------------------
| cont_id | cont_no | cont_condition |
--------------------------------------
| 3 | J82 | blaaablabla |
| 4 | S71 | blaaablabla |
--------------------------------------
答案 0 :(得分:1)
使用左侧排除JOIN - 此查询将返回左表(containers
)中与右表(sell
)中的任何记录都不匹配的所有记录)。
select cont_id, cont_no, cont_conditio from containers
left join sell on containers.cont_no = sell.cont_no
where sell.cont_no is null
对于不同类型的JOIN,有很好的视觉解释:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
答案 1 :(得分:0)
对第二个表键使用LEFT JOIN为空。
select cont_id, cont_no, cont_conditio from containers left join sell on containers.cont_no = sell.cont_no where sell.cont_no is nul