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,您能否重命名表名和列名(例如数据)以匹配查询?