2012-12-08 1 views
0

이 쿼리가 절실합니다. 두 테이블 table1 및 table2, 테이블이 동일하지만 그들은 다른 데이터가 있습니다. 열 코드와 제조업체별로 중복을 제거하려고합니다. 나는 또한 표 2과 열 코드 및 제조업체UNION 및 GROUP BY를 사용할 때 두 ID 열을 모두 선택하십시오.

SELECT * FROM ( 
     SELECT id,code,manufacturer FROM table1 WHERE manufacturer = 1 
     UNION SELECT id,code,manufacturer FROM table2 WHERE manufacturer = 1 
) AS t GROUP BY code HAVING COUNT(*) > 1 

에서 표 1의 ID에서 최종 결과의 ID에 필요하지만 결과에 난 테이블 1 만 값을 가지고 그렇게하십시오. 괜찮아요.하지만 난 그냥 table2에서 id를 얻을 필요가 있습니다. 제발 누군가가 내게 이걸하는 방법을 줄 수 있습니까?

답변

0

당신은이 두 가지 기본 문제 :

문제 1 : UNION ALL를 사용해야하는 경우 UNION 중복을 제거하기 때문에
당신은 UNION를 사용하고 있습니다!

문제 2 :
이이 문제에 대해 갈 수있는 올바른 방법이 아니다. 유니콘이 아닌 조인을 사용해야합니다.
이를 시도해보십시오 WHERE

SELECT 
    t1.id as table1_id, 
    t2.id as table2_id, 
    t1.code, 
    t1.manufacturer 
FROM table1 t1 
JOIN table2 t2 
    ON t2.code = t1.code 
    AND t2.manufacturer = t1.manufacturer 
WHERE manufacturer = 1 -- this WHERE clause is optional 

사용은 조금 이상하다 - 모든 제조업체에서 모든 중복을 얻기 위해 그것을 제거하는 것이 좋습니다.

+0

감사합니다. –

관련 문제