2012-06-13 2 views
1

다음의 mysql 테이블이 있습니다. 나는 B을 가진 행과 관련된 모든 행을 code 열의 값으로 선택하려고 시도해 왔습니다. 관계는 열 trans_idMySQL : 다른 행에서 특정 값과 관련된 모든 행 선택

id trans_id code amount side 
1  1   A 200  left 
2  1   B 200  right 
3  2   J 100  right 
4  2   C 100  right 
5  2   B 200  left 
6  3   A 630  right 
7  3   K 630  left 

의 값을 기준으로 내 예상 결과 :

id trans_id code amount side 
    1  1   A 200  left 
    3  2   J 100  right 
    4  2   C 100  right 

당신이 어떤이를 달성하기 위해 MySQL의 쿼리해야 말해 주 시겠어요?

감사합니다 :)

+2

예상되는 결과를 제공 할 수 있습니까? 조건 코드 값 = 'B'인 모든 행을 가져올 조건 where select * from yourtable where code = 'B' –

+0

@Sudhakar 내 질문을 편집했습니다. 내 게시물을 다시 확인하십시오. –

답변

2

다음 쿼리는 원하는 결과를 반환해야합니다. 이것은 select 쿼리를 사용하여 결과를 WHERE 절로 반환합니다.

SELECT * FROM yourTable 
WHERE trans_id IN (
    SELECT trans_id FROM yourTable WHERE code='B' 
) 
AND code!='B' 
+0

고마워 :) 그 작동 :) –

+0

그레이트 :) 크리스가 제출 한 답변도 당신에게 동일한 결과를 제공해야합니다, 지금 그것은 당신의 테이블 인덱스와 쿼리가 더 빨리 수행 할 데이터에 달려 있습니다. – Zagor23

0

내가 제대로 문제를 이해하고있어 경우 하위 쿼리는 당신이 필요로 무엇을 얻을 것입니다.

SELECT * FROM yourTable WHERE id IN (SELECT trans_id FROM yourTable WHERE code='B') 
1

귀하의 질문은 불분명하지만, 지금까지 내가 이해, 당신은 다음과 같이 가입 자체를 사용할 수 있습니다

select a.id, 
     a.trans_id, 
     a.code, 
     a.amount, 
     a.side 
    from table as a 
    inner join table as b on (a.id=b.trans_id and b.code='B'); 

이 = 2 table.id로 행을 반환합니다

id trans_id code amount side 
2  1   B 200  right 
1
select 
    t1.* 
from 
    table_name t1 
     inner join table_name t2 on t1.trans_id = t2.trans_id 
where 
    t2.code = 'B' and 
    t2.code <> t1.code