2014-06-11 46 views
0

我有一个表contribution_requestMySQL查询是给不正确的结果

project_id | instrument_id 
-------------------------- 
    1  |  5 
    1  |  6 

我需要检索具有instrument_id=5instrument_id=6在这个例子中project_id这将是1

我想这是简单但我不知道如何去做。

我已经尝试了很多不同的东西,但都没有给我正确的结果。

像:

SELECT cr.project_id 
FROM contribution_request as cr 
WHERE cr.project_id = 1 
    AND cr.project_id = 6 

或者这

select p.id, cr.instrument_id from contribution_request as cr, project as p 
where p.id = cr.project_id 
    and cr.instrument_id = 1 
    and cr.instrument_id = 6 

请帮助!

+0

SELECT PROJECT_ID FROM MY_TABLE WHERE INSTRUMENT_ID(5,6)GROUP BY PROJECT_ID HAVING COUNT(*)= 2; – Strawberry

+0

@Strawberry你的解决方案无法正常工作..'功能instrument_id不存在'' – Merlin

+0

错字:instrument_id IN(5,6) – Strawberry

回答

2

SQL Fiddle

SELECT cr1.project_id 
FROM contribution_request as cr1 
INNER JOIN contribution_request as cr2 ON cr1.project_id = cr2.project_id 
WHERE cr1.instrument_id = 5 AND cr2.instrument_id = 6 
+0

它应该是cr1.project_id = 5 –

+0

** @马丁K **,是的,你是对的,我纠正它 – Linger

+0

我只是没有承诺如何project_id可以有两个值同时......也许这可以用'where cr1.project_id = 5或cr2.project_id = 6'固定... ...飞走... – Hackerman

0

使用或代替AND。列instrument_id不会有两个值。

如果您需要检查多个值使用IN(5,6,7,8,...)