Mysql 通过两个表的联接获取不同的记录

Mysql 通过两个表的联接获取不同的记录,mysql,Mysql,我有两张桌子: 建筑商 b_id fk_c_id 1 1 2 1 3 1 4 1 5 1 6 2 7 2 fk_b_id sb_id 1 2 1 3 1 4 2 5 6 7 次级建筑商 b_id fk_c_id 1 1 2 1 3 1 4 1 5 1 6 2 7 2 fk_b_id sb_id 1 2 1

我有两张桌子:

建筑商

b_id fk_c_id
 1   1
 2   1
 3   1
 4   1
 5   1
 6   2
 7   2
fk_b_id sb_id
   1      2
   1      3
   1      4
   2      5
   6      7
次级建筑商

b_id fk_c_id
 1   1
 2   1
 3   1
 4   1
 5   1
 6   2
 7   2
fk_b_id sb_id
   1      2
   1      3
   1      4
   2      5
   6      7
我需要
不同的b_id
,它们不存在于子构建器中,并且必须具有相同的fk_id

我创建:

SELECT DISTINCT b.id FROM pms_builder_to_subbuilders bsb 
LEFT JOIN pms_builders b ON b.id = bsb.sb_id WHERE b.fk_c_id = '1' 

但是它显示子构建器的不同记录

您可以通过以下查询获得所需的结果:

SELECT DISTINCT b.b_id FROM builders b LEFT JOIN subbuilders sb ON sb.fk_b_id = b.b_id WHERE b.fk_c_id = '1' AND ISNULL(fk_b_id);

我想您需要这个查询:

SELECT DISTINCT b_ID
FROM builders
WHERE b_ID NOT IN 
    (SELECT DISTINCT fk_b_id FROM subbuilders)
但它又回来了

 b_ID
 ========
 3
 4
 5
 7
但我不明白你的说法:
必须有相同的fk\u c\u id
。你这是什么意思

b_id = fk_c_id

如果是这种情况,则不会返回任何行,因为只有记录
1
具有相同的b_ID和fk_c_ID,但存在于表
subbuilders

中,因为这适用于mysql,无论您使用何种编程语言访问MySQL,您能否重命名表名和列名(例如数据)以匹配查询?