2014-03-13 5 views
1

나는 두 개의 테이블이 있습니다MySQL의 선택 차이 (마이너스)

표 1 : 재고

uid|item| 
-------- 
01 |value1 
02 |value2 
02 |value2 
etc|etc 

표 2 : 판매

uid|item 
-------- 
02|value2 
02|value2 
02|value2 

I 재고의 차이를 얻는 방법 (합 한 품목의 총 판매량 - 제품의 총 판매량 (합계)? 나는 두 개의 합계의 차이를 계산하려고 시도했으나 때로는 항목이 판매 테이블에 없기 때문에 주식에서 "아무것도"를 빼는 경우가 있습니다.

2 - NULL = NULL이고 원하는 것이 있습니다. 같은 2-0 = 2

MySQL은 빼기 작업을 구현하지 않는

답변

4

편리 여기에 올 것이다 :

SELECT t1.uid, SUM(t1.item) - IFNULL(SUM(t2.item), 0) 
FROM table1 t1 LEFT JOIN table2 t2 ON t1.uid = t2.uid 
GROUP BY t1.uid 

이 적절한 값으로 NULL의 대체, 여기 0

7

- 그것은 대안보다 어떤 경우에는 더 나은 실행 계획을 허용 할 수와 같은 불행한 일이다 :

SELECT a.* 
FROM a 
LEFT JOIN b 
ON a.id=b.id 
WHERE b.id IS NULL 

또는 ...

SELECT a.* 
FROM a 
WHERE a.id NOT IN (
SELECT b.id 
FROM b 
) 
1
sum(ifnull(item,0)) - sum(ifnull(product,0)) 
입니다