세 테이블 (t1, t2, t3)의 합집합을가집니다. 레코드 각 재방송 똑같은 수는 첫 번째 열은 ID, 제 양 : MySQL에서 UNION의 결과를 더하는 간단한 방법
1 10
2 20
3 20
1 30
2 30
3 10
1 20
2 40
3 50
가 정리해하도록 SQL 방식으로
간단한있을 경우에만 얻을 :
1 60
2 80
3 80
세 테이블 (t1, t2, t3)의 합집합을가집니다. 레코드 각 재방송 똑같은 수는 첫 번째 열은 ID, 제 양 : MySQL에서 UNION의 결과를 더하는 간단한 방법
1 10
2 20
3 20
1 30
2 30
3 10
1 20
2 40
3 50
가 정리해하도록 SQL 방식으로
간단한있을 경우에만 얻을 :
1 60
2 80
3 80
select id, sum(amount) from (
select id,amount from table_1 union all
select id,amount from table_2 union all
select id,amount from table_3
) x group by id
SELECT id, SUM(amount) FROM
(
SELECT id, SUM(amount) AS `amount` FROM t1 GROUP BY id
UNION ALL
SELECT id, SUM(amount) AS `amount` FROM t2 GROUP BY id
) `x`
GROUP BY `id`
나는 더 빠를 것이라고 생각하기 때문에 각 테이블을 뭉뚱그 렀고 연합했다.하지만 두 가지 해결책을 시도해야한다.
하위 쿼리 :
SELECT id, SUM(amount)
FROM (SELECT * FROM t1
UNION ALL SELECT * FROM t2
UNION ALL SELECT * FROM t3
)
GROUP BY id
확실하지 MySQL이 공통 테이블 표현식을 사용하지만 포스트 그레스에서이 작업을 수행 할 경우 :
WITH total AS(
SELECT id,amount AS amount FROM table_1 UNION ALL
SELECT id,amount AS amount FROM table_2 UNION ALL
SELECT id,amount AS amount FROM table_3
)
SELECT id, sum(amount)
FROM total
은 그뿐만 아니라 트릭을한다고 생각합니다.
보기에서이를 수행하는 방법을 찾고 있지만 하위 쿼리는보기에서 허용되지 않습니다. 대안이 있습니까? –
하위 쿼리를 다른보기로 변경 – Jimmy