반응형
값이 다른 행을 단일 행으로 병합
사용 중인 쿼리
SELECT v.*, if( up.upload_key = 'send', up.upload_value, 0 ) AS send,
if( up.upload_key = 'host', up.upload_value, 0 ) AS host,
if( up.upload_key = 'upload_id', up.upload_value, 0 ) AS upload_id
FROM TableInit v JOIN TableName up ON up.video_id = v.id_video;
쿼리의 반환은 다음과 같습니다.
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|--------------|
| 6 | Title | Desc | 0 | cnn | 0 |
| 6 | Title | Desc | 0 | 0 | 0 |
| 6 | Title | Desc | 0 | 0 | sHGN-tSNvJYs |
제가 필요한 반품은 다음과 같습니다.
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|-------------|
| 6 | Title | Desc | 0 | cnn |sHGN-tSNvJYs |
GROUP BY를 사용하면 첫 번째 행의 값만 반환되고 다른 행의 값은 반환되지 않습니다.
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|-----------|
| 6 | Title | Desc | 0 | cnn | 0 |
이 작업을 수행해야 합니다.
SELECT v.*, if( up.upload_key = 'send', up.upload_value, 0 ) AS send,
MAX(if( up.upload_key = 'host', up.upload_value, null )) AS host,
MAX(if( up.upload_key = 'upload_id', up.upload_value, null )) AS upload_id
FROM TableInit v JOIN TableName up ON up.video_id = v.id_video GROUP BY id_video;
방금 추가했습니다.MAX
host 및 upload_id 열의 최대값만 선택하는 함수입니다.
반환된 결과:
+----------+--------+------+------+------+--------------+
| id_video | titulo | desc | send | host | upload_id |
+----------+--------+------+------+------+--------------+
| 6 | Title | Desc | 0 | cnn | sHGN-tSNvJYs |
+----------+--------+------+------+------+--------------+
언급URL : https://stackoverflow.com/questions/54406453/merge-rows-with-different-values-into-a-single-row
반응형
'source' 카테고리의 다른 글
Flexbox 레이아웃에 100% 수직 공간을 사용하려면 어떻게 해야 합니까? (0) | 2023.08.26 |
---|---|
CSS 높이(백분율)가 작동하지 않음 (0) | 2023.08.26 |
수동으로 npm 취약성을 수정하는 방법은 무엇입니까? (0) | 2023.08.26 |
부트스트랩: 모달에서 다른 모달 열기 (0) | 2023.08.26 |
두 PHP datetime 개체가 동일한 날짜로 설정되었는지 확인합니다(시간 무시). (0) | 2023.08.26 |