在mysql中获取未连接的值

时间:2014-03-18 07:26:25

标签: mysql join

我在Mysql中有2个表

表1 -

Id candidate_id resume

25 100 hjksdf.jpg

26 101 hdd.docx

29 102 hf.docx

30 103 hsdfh.docx

表2 -

resumes_sent_id client_id candidate_id date

1 43 100 2014-03-14 03

2 43 101 2014-03-15 03

我需要加入这两个表,client_id 43加入后我只需要“未加入”的记录。如果我加入,我可以获得candidate_id哪些值具有唯一的100,101。 但是在我的输出中,我需要那些102,103的数据记录,除了唯一的连接值。

基于t2 client_id为43,有两个值100和101,但我想过滤不匹配的值,如102.

5 个答案:

答案 0 :(得分:2)

试试这个

SELECT table1.*
FROM table1 LEFT JOIN table2 ON table2.candidate_id=table1.candidate_id
WHERE table2.candidate_id IS NULL and t2.client_id=43

答案 1 :(得分:1)

如果您想要无与伦比的记录,则必须使用Outer join

select your column names from table1 t1 outer join table2 t2 on t1.candidate_id=t2.candidate_id 

答案 2 :(得分:0)

使用左连接并测试null

select * from table1 t1
left join table2 t2 on t1.candidate_id=t2.candidate_id
where t2.candidate_id is null

left join返回第一个表中包含t2值的所有行,其中存在匹配项或空值,其中没有对应的t2行。从该结果中,您需要所有不匹配的行,从而导致t2.candidate_idnull

答案 3 :(得分:0)

使用以下代码:

SELECT * FROM `Table 1` t1 
    LEFT JOIN `Table 2` t2 
    ON t1.candidate_id=t2.candidate_id 
    WHERE t2.candidate_id IS NULL

答案 4 :(得分:0)

希望这有帮助......

如果您在查询中使用不等号,则会得到6行的结果

SELECT     * FROM  TABLE1 T1 INNER JOIN TABLE2 T2 ON T2.CLIENT_ID= 43 AND  T1.CANDIDATE_ID  T2.CANDIDATE_ID

但由于加入

,它包括2行100,101

....如果你手动想从结果中删除100,101 id,那么就得到了这个查询..

SELECT * FROM TABLE1 T1 INNER JOIN TABLE2 T2 ON T2.CLIENT_ID= 43 AND T1.CANDIDATE_ID  T2.CANDIDATE_ID AND T1.candidate_id NOT IN(101,100)

由于