>  Q&A  >  본문

SQL 기본 테이블에서 선택 - 세부 테이블(형식화된 데이터)

"공급업체"와 "연락처"라는 두 개의 테이블이 있습니다.

연락처 테이블의 데이터는 공급업체 테이블의 기록과 일치합니다.

공급업체 데이터

id 이름
1 마력
2 화웨이

연락처 데이터

id 공급업체 ID 연락처
1 1
2 1 스미스
3 1
4 2 미국 에너지부
5 2 심지

이제 다음 결과를 반환하는 쿼리를 만들고 싶습니다

id 이름 연락처
1 마력 존, 스미스, 윌
2 화웨이 미국 에너지부 Wake

또는 다음 결과가 반환되어야 합니다

id 이름 연락처 연락처 연락처
1 마력 스미스
2 화웨이 미국 에너지부 심지

P粉904191507P粉904191507205일 전388

모든 응답(1)나는 대답할 것이다

  • P粉124890778

    P粉1248907782024-03-28 09:13:08

    MySQL GROUP_CONCAT 聚合函数来获取您的第一个输出表。它自己的 ORDER BY 절을 사용하면 행의 연결 순서를 확인할 수 있습니다.

    으아아아

    창 함수를 사용할 수 있습니다. ROW_NUMBER 通过对供应商进行分区来为 Contact 表中的每一行分配排名。然后使用 IF 语句将联系人分成三列,该语句将检查排名的三个可能值。 MAX 집계 함수를 사용하면 null 값을 제거할 수 있습니다.

    으아아아

    공급업체당 고객이 3명 이상인 경우 두 번째 쿼리가 작동하지 않을 수 있습니다. 이 경우 가능한 최대 공급업체 수를 포함하도록 쿼리를 수정하거나 준비된 문을 사용할 수 있습니다. 그러한 솔루션이 정말로 필요하다면 아래에 의견을 남겨주세요.

    더 나은 이해를 위해 여기에서 이러한 솔루션을 사용할 수 있습니다. 첫 번째 솔루션은 모든 MySQL 버전에서 작동하지만 두 번째 솔루션은 MySQL 8에서 작동합니다.

    회신하다
    0
  • 취소회신하다