使用两个表的JOIN获取DISTINCT记录

时间:2012-01-28 12:11:38

标签: mysql

我有两张桌子:

助洗剂

b_id fk_c_id
 1   1
 2   1
 3   1
 4   1
 5   1
 6   2
 7   2

subbuilders

fk_b_id sb_id
   1      2
   1      3
   1      4
   2      5
   6      7

我希望子建设者表中不存在的Distinct b_id,并且必须具有相同的 fk_c_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' 

但它显示来自子建基者的独特记录。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我想你想要这个查询:

SELECT DISTINCT b_ID
FROM builders
WHERE b_ID NOT IN 
    (SELECT DISTINCT fk_b_id FROM subbuilders)

但它返回

 b_ID
 ========
 3
 4
 5
 7

但我不明白你的陈述:must have same fk_c_id。那是什么意思?

b_id = fk_c_id

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