2010-07-13 2 views
3

임시 테이블을 만드는 경우 2 개의 열이 있습니다. idscore. 나는 그들을 함께 추가하고 싶다.2 개의 임시 테이블을 함께 추가하는 방법

내가 추가하려는 방식은 각각이 동일한 id을 포함하고 있다면 id을 복제하는 대신 점수를 함께 추가하는 것입니다.

나는 t1t2

t1라는이 개 임시 테이블이있는 경우했다 :

id 3 score 4 
id 6 score 7 

t2이 있었다 :

id 3 score 5 
id 5 score 2 

내가 포함 된 새 임시 테이블로 끝날 것 :

id 3 score 9 
id 5 score 2 
id 6 score 7 

내가 이것을하고 싶은 이유는 제품 검색을 구축하려고하기 때문입니다. 내가 사용하고자하는 몇 가지 알고리즘이 있는데, 1 개는 fulltext를 사용하지 않는다. 그리고 두 알고리즘을 모두 사용하여 algorithm1을 기반으로 임시 테이블을 만들고 algorithm2를 기반으로 임시 테이블을 만들고 싶습니다. 그런 다음 그들을 결합하십시오.

답변

6

에 값을 병합 한 후 ID와 두 개의 "점수"열의 합을 선택하는 방법에 대해 :이 안된하지만 당신은 두 가지의 조합을 수행 할 수 있어야

SELECT id, SUM(score) AS score FROM (
    SELECT id, score FROM t1 
    UNION ALL 
    SELECT id, score FROM t2 
) t3 
GROUP BY id 
+0

나보다 15 초 앞서! –

+0

중첩 된 선택의 별명을 지정해야하며 괄호 안에 실수가 있습니다. –

+3

@ 브랜든 : 구문이 올바르지 만 Tom에게는 UNION ALL이 있습니다. 팀워크로 이동하십시오! –

1

ID에 대해 완전 외부 조인을 수행하십시오. 0

+0

맞음 - MySQL이 완전한 외부 조인을 지원한다고 생각하지 않는다는 점을 제외하고는 맞습니다. 오른쪽과 왼쪽 조인을 결합해야합니다. –

2

표는 다음 점수

당신이 필요로하는
SELECT id,SUM(score) FROM 
(
    SELECT id,score FROM t1 
    UNION ALL 
    SELECT id,score FROM t2 
) joined 
GROUP BY id 
+2

t1과 t2에 동일한 id와 score를 가진 항목이있을 경우 UNION ALL을 사용해야합니다. – Tom

+0

우수 포인트 –

1
select id, sum(score) 
from (
select * from table 1 
union all 
select * from table2 
) tables 
group by id 
+0

흠, 너희들은 빠르지 만 내 것이 정확하다. 브렌든 UNION ALL 을 사용해야합니다. 구문 오류가 발생하여 서브 쿼리 – umassthrower

+0

의 별칭을 지정해야합니다. 에스. 나는 S.O에 상당히 익숙하다. 어떻게 코드를 인용 하겠는가? – umassthrower

+0

코드를 강조 표시 한 다음 이진 코드처럼 보이는 버튼을 클릭하십시오. –

1
SELECT id, SUM(score) FROM 
(
    SELECT id, score FROM #t1 
    UNION ALL 
    SELECT id, score FROM #t2 
) AS Temp 
GROUP BY id 
0

을 필드를 그룹화하고 추가 결과에 select를 수행하는 그 두 테이블의 합집합을 만들면 결과를 쉽게 그룹화 할 수 있습니다.

SELECT id, sum(score) FROM 

(
SELECT id, score FROM t1 
UNION 
SELECT id, score FROM t2 
) as tmp 
GROUP BY id;