1
누군가가 이것이 작동하지 않는 이유를 말해 줄 수 있습니까? 두 개의 서로 다른 열을 더하고 함께 합치고 싶습니다. 테스트 데이터는 한 열에서는 10이고 다른 열에서는 10입니다. 총 20 개가 예상됩니다.Mysql 추가, 예상대로 결과가 없습니다.
Sum(col1 + col2) as total
누군가가 이것이 작동하지 않는 이유를 말해 줄 수 있습니까? 두 개의 서로 다른 열을 더하고 함께 합치고 싶습니다. 테스트 데이터는 한 열에서는 10이고 다른 열에서는 10입니다. 총 20 개가 예상됩니다.Mysql 추가, 예상대로 결과가 없습니다.
Sum(col1 + col2) as total
아마 하나 또는 둘 모두의 열에 NULL 값이 있습니다. 집계 함수 SUM은 NULL 값을 무시하지만 더하기 연산자는 그렇지 않습니다. - (1 + NULL) 값은 NULL입니다 (예상 한대로 1이 아님). 결과적으로 합계는 예상보다 낮아집니다.
올바른 합계를 얻으려면, 당신은 개별적으로 각 열을 통해 SUM 결과를 추가 할 수 있습니다 열 중 하나가 완전히 NULL이 될 수 있다면이 여전히 작동하지 않습니다SUM(col1) + SUM(col2) AS total
. 그럼 당신이 시도 할 수 있습니다 :
SELECT SUM(col1), SUM(col2) FROM yourtable; -- Returns 10, 10
SELECT SUM(col1 + col2) FROM yourtable; -- Returns 15
SELECT SUM(col1) + SUM(col2) FROM yourtable; -- Returns 20
SELECT SUM(col1 + IFNULL(col2, 0)) FROM yourtable; -- Returns 20
테스트 데이터 :
CREATE TABLE yourtable (col1 INT NOT NULL, col2 INT NULL);
INSERT INTO yourtable (col1, col2) VALUES (5, NULL), (5, 10);
col1 | col2 -----+---- 5 | NULL 5 | 10
그런 다음 서로 다른 쿼리를 시도 :
예를 들어SUM(IFNULL(col1, 0)) + IFNULL(col2, 0)) AS total
,이 테이블이 상상
감사 마크. 그거였다. :) – jim
또한 편집을 지금까지 보지 못했습니다. 고마워요. 정말 저를 위해 그것을 원근법으로 만듭니다. – jim
@jim : 천만에요. –