我在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.
答案 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_id
为null
。
答案 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)
由于