MySQL从具有条件的两个表中获取值

时间:2014-01-14 23:38:28

标签: mysql

我想我已经为这一步做了尽可能多的事情

很难将下面的语句转换为Query。


从house_info中选择house_code

family_info中不存在house_info.house_code


house_codehouse_info表中的主键和唯一键。 但是,house_code中的family_info不是唯一的,也不是主键(存在多个相同house_code的数量)

house_code

相比,我试图获取family_info中不存在的house_info个值

ex)house_info(1,2,3,4,5)中的house_code和family_info中的house_code(1,1,2,2,3)

结果:4,5

我尝试使用内部联接,如果不存在和许多其他查询但它似乎不能按我的意愿工作

我也试过

 SELECT a.house_code FROM house_info a, family_info b WHERE a.house_code!=b.house_code;

3 个答案:

答案 0 :(得分:1)

实现目标的一种可能方式

select house_code from house_info
where house_info.house_code not in (select house_code from family_info)

not in表示“值不是这组值的一部分”,嵌套选择提供了一组值。

答案 1 :(得分:1)

SELECT house_code FROM house_info 
WHERE house_code NOT IN (SELECT house_code FROM family_info)

按照你的例子:

SELECT house_code FROM house_info

==> (1,2,3,4,5)= A

(SELECT house_code FROM family_info)

==> (1,1,2,2,3)= B

A NOT IN B

==> (4,5)

答案 2 :(得分:1)

使用单边连接的简单方法:

select 
    h.house_code
from 
    house_info as h
    left join family_info as f on h.house_code = f.house_code
where
    f.house_code is null