2012-03-12 5 views
2

두 개의 테이블이 있습니다. 두 테이블의 제목 열이 일치하는 테이블 1에서 UID를 가져 오려고합니다.MYSQL 해당 테이블의 열 값이 다른 테이블의 열 값과 일치하는 경우에만 한 테이블의 데이터를 선택하려면 어떻게합니까?

Table 1    

UID SubjectA   
1  Cows   
2  Chickens  
3  Mice   
4  Rabbits   
5  Cows   

Table 2 

Name SubjectB 
A  Cows 
B  Cows 
C  Cows 
D  Cows 
E  Mice 

예상 결과 *

는 UID를 가져 오기 : 1, 3, 5

내가 아주 조인과 노동 조합 이해가 안 돼요. 둘 다 두 테이블을 결합하는 것 같습니다. 이 일을 올바르게 수행하는 방법은 무엇입니까?

첫째, 내가 exists 사용하는 것이 좋습니다 것이 작업을 수행하는 방법은 여러 가지가 있습니다

답변

4

... :

SELECT 
    UID 
FROM 
    Table1 
WHERE EXISTS (
    SELECT 1 
    FROM Table2 
    WHERE SubjectB = SubjectA 
) 

을 또는 당신이 사용할 수있는 joindistinct :

SELECT DISTINCT 
    UID 
FROM 
    Table1 JOIN 
    Table2 ON SubjectB = SubjectA 

마지막으로 in :

을 사용할 수 있습니다.210
+0

빠른 응답에 감사드립니다! "SELECT 1"라인이 무엇을 의미하는지 질문 할 수 있습니까? 다른 숫자가 2 또는 3이라고하면 함수는 어떻게 바뀌나요? – tjones

+0

후자! 그것은 작동합니다! 고마워요 @ 마이클! – tjones

+0

@tjones'exists'는 행이 반환되면 true를 반환합니다 ... 반환되는 행에 어떤 값이 있는지 중요하지 않으므로 값을 하드 코딩하면 SQL이 실제 데이터를 가져 오지 못하게하는 최적화입니다 테이블의 값. 어떤 값이 하드 코딩되었는지는 중요하지 않습니다 ... '2', '3'또는 'potato' '일 수 있습니다 ... –

관련 문제