MySQL은 그룹 다음에 null이 아닌 첫 번째 값을 가져옵니다.
고유하지는 않지만 필요한 데이터가 있는 큰 테이블이 있습니다.이 표는 여러 개의 조합을 선택한 결과이므로 실제 표가 아닙니다.다른 이유로 실제 테이블로 만들 수 없습니다.
UNION의 모든 테이블에는 결국 고유한 이메일 열이 있습니다.결과 레코드는 다음과 같습니다.
1 ozzy@test.com Ozzy
2 test@test.com Tony
3 test@yahoo.com Steve
4 tiny@test.com
13 tony@gmail.com Tony
14 test@test.com Ozzy
15 test@yahoo.com Dave
16 tiny@test.com Tim
보다시피 일부 전자 메일은 이름이 다르거나 존재하지 않는 이름으로 한 번 이상 나타납니다.추가할 때는GROUP BY email
마지막 절에서 결과는 다음과 같습니다.
1 ozzy@test.com Ozzy
2 test@test.com Tony
3 test@yahoo.com Steve
4 tiny@test.com
13 tony@gmail.com Tony
보다시피 이메일 4는 첫번째 항목을 선택했기 때문에 이름이 없습니다.NULL
이름에 걸맞게그런 다음에 사용하려고 했습니다.GROUP_CONCAT
결과는 다음과 같습니다.
1 ozzy@test.com Ozzy
14 test@test.com Ozzy,Tony
15 test@yahoo.com Dave,Steve
16 tiny@test.com Tim
13 tony@gmail.com Tony
보시다시피, 이제 모든 사용자가 이름을 가지고 있지만 일부 행에는 둘 이상의 이름이 연결되어 있습니다.제가 하고 싶은 일은GROUP BY email
그리고 첫번째를 선택합니다.NOT NULL
각 행에 대한 각 열의 항목은 이론적으로 다음과 같습니다.
1 ozzy@test.com Ozzy
2 test@test.com Tony
3 test@yahoo.com Steve
4 tiny@test.com Tim
13 tony@gmail.com Tony
사용해 보았습니다.COALESCE
하지만 뜻대로 되지 않습니다.현재 쿼리는 다음과 같습니다.
SELECT
id,
email,
`name`
FROM
(
SELECT
email,
`name`
FROM
multiple_tables_and_unions
) AS emails
GROUP BY email
많은 테이블을 포함하고 있기 때문에 임시 테이블에서 코드를 제거했지만 모두 선택합니다.email
그리고.name
기둥.본질적으로 나는 다음과 같은 기능이 필요합니다.GROUP_COALESCE
불행하게도 그것은 존재하지 않습니다.내 선택지는?
사용해보기MAX
, 다음과 같이:
SELECT
email,
MAX(`name`)
FROM
(
SELECT
email,
`name`
FROM
multiple_tables_and_unions
) AS emails
GROUP BY email
첫번째를 선택하려면non null
가치,GROUP_CONCAT
여기서 편리할 겁니다다음은 예시입니다.
SELECT
email,
SUBSTRING_INDEX(GROUP_CONCAT(`name`), ',',1)
FROM
(
SELECT
email,
`name`
FROM
multiple_tables_and_unions
) AS emails
GROUP BY email;
언급URL : https://stackoverflow.com/questions/22782932/mysql-get-first-non-null-value-after-group-by
'programing' 카테고리의 다른 글
Percona MySQL 마스터에서 MariaDB 슬레이브로 복제하는 것이 얼마나 안전합니까? (0) | 2023.09.08 |
---|---|
Bootstrap4 dependency PopperJs가 Angular에서 오류를 발생시킵니다. (0) | 2023.09.08 |
NodeJS - MySQL(Callback) Connections를 MariaDB(Promise/async-wait)로 업데이트해야 합니까? (0) | 2023.09.08 |
비활성화된 입력 요소를 고려하여 $.serialize()를 만드는 방법은 무엇입니까? (0) | 2023.09.08 |
PowerShell에서 DateTime을 UNIX 시간으로 변환하려면 어떻게 해야 합니까? (0) | 2023.09.08 |