通过与另一个表列进行比较来选择列

时间:2015-01-22 09:58:18

标签: mysql

我有两个表容器,卖

容器

--------------------------------------
| 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   |
--------------------------------------

2 个答案:

答案 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