그룹화된 결과에서 각 열의 최신 null이 아닌 값을 선택하여 행을 병합/결합하는 방법은 무엇입니까?
id | 사용자 | 과일 | 숫자 | 제작시간 |
---|---|---|---|---|
1 | 제인 | 애플 | 비어있음 | 2022-01-01 |
2 | 존 | 수박 | 32 | 2022-01-02 |
3 | 존 | 비어있음 | 72 | 2022-01-03 |
4 | 존 | 배 | 비어있음 | 2022-01-04 |
다음 방법은 작동하지 않습니다:
으아악다음 결과가 나왔으면 좋겠습니다:
으아악문제는 COALESCE() 함수가 값 세트에서는 작동하지 않고 목록에서만 작동한다는 것입니다.
COALESCE() 대신 MIN() 또는 MAX()를 솔루션으로 사용하여 언급된 많은 주제가 있습니다. 하지만 최저값이나 최고값이 아닌 이전 값을 덮어쓰려면 새 값이 필요하기 때문에 문제가 해결되지 않습니다.
P粉9795861592023-09-07 20:00:18
COALESCE()
은 집계 함수가 아니지만 지정된 값 목록에서만 작동할 수 있으므로 이 게시물에서 @jsowa의 해결 방법을 찾았습니다. 왜 "COALESCE"가 "GROUP BY"와 작동하지 않습니까?
대신 SUBSTRING_INDEX(GROUP_CONCAT())
을 사용할 수 있습니다 SUBSTRING_INDEX(GROUP_CONCAT())
来替代COALESCE()
.
GROUP_CONCAT()의 ORDER BY 절에 특히 주의하세요. 단점은 어떤 값에서든 구분 기호가 사용되지 않는 문자여야 한다는 것입니다.
으아악결과 반환
으아악