2010-02-12 4 views
1

나는이 또한이 나는 모든 결과를 당길 수있을 것이라고 기대했다MySQL을 사용하면 다음 작업을 수행 할 수 있습니까?

ON userMenuTable.categoryId = categoryTable.categoryId 

조건과 일치하는 결과 만 반환

SELECT * FROM categoryTable 
LEFT JOIN userMenuTable 
ON userMenuTable.categoryId = categoryTable.categoryId 

다음을 수행하는 MySQL의 쿼리를 가지고 JOIN에서 온 사람들?

답변

0

예제에서와 같이 왼쪽 외부 조인의 결과는 "오른쪽"userMenuTable에서 조인 조건이 일치하는 레코드를 찾지 않아도 "왼쪽"categoryTable의 모든 레코드를 포함합니다.

반면에 오른쪽 외부 조인은 테이블 반전을 제외하고는 왼쪽 외부 조인과 비슷합니다. "오른쪽"userMenuTable의 모든 행은 결과 집합에 적어도 한 번 나타납니다. MySQL에서 LEFT JOINRIGHT JOIN 사이 UNION로 에뮬레이트 할 수있는 full outer join가 필요 같은

a1ex07 suggested in another answer, 그것은 보일 수 있습니다.

3

난 당신이

SELECT * FROM categoryTable 
LEFT JOIN userMenuTable 
ON userMenuTable.categoryId = categoryTable.categoryId 
UNION 
SELECT * FROM categoryTable 
RIGHT JOIN userMenuTable 
ON userMenuTable.categoryId = categoryTable.categoryId 
0

나는 아마도 당신이 찾고있는 무슨 생각 (MySQL은 그 구문이없는,하지만 당신은 UNION + LEFT + RIGHT가 원하는 결과를 얻을 수 있습니다 가입) 가입 FULL 필요가 있다고 생각 전체 외부 조인입니다. MySQL은 FULL OUTER JOIN을 지원하지 않습니다,하지만 당신은 LEFT를 사용하여 동등한를 얻을 수 있으며, RIGHT 조인 :

SELECT * FROM categoryTable LEFT JOIN userMenuTable 
    ON categoryTable.categoryId = userMenuTable.categoryId 
UNION ALL 
SELECT * FROM categoryTable RIGHT JOIN userMenuTable 
    ON categoryTable.categoryId = userMenuTable.categoryId 
WHERE categoryTable.categoryId IS NULL; 

공유하고 즐길 수 있습니다.

관련 문제