"공급업체"와 "연락처"라는 두 개의 테이블이 있습니다.
연락처 테이블의 데이터는 공급업체 테이블의 기록과 일치합니다.
공급업체 데이터
id | 이름 |
---|---|
1 | 마력 |
2 | 화웨이 |
연락처 데이터
id | 공급업체 ID | 연락처 |
---|---|---|
1 | 1 | 존 |
2 | 1 | 스미스 |
3 | 1 | 윌 |
4 | 2 | 미국 에너지부 |
5 | 2 | 심지 |
이제 다음 결과를 반환하는 쿼리를 만들고 싶습니다
id | 이름 | 연락처 |
---|---|---|
1 | 마력 | 존, 스미스, 윌 |
2 | 화웨이 | 미국 에너지부 Wake |
또는 다음 결과가 반환되어야 합니다
id | 이름 | 연락처 | 연락처 | 연락처 |
---|---|---|---|---|
1 | 마력 | 존 | 스미스 | 윌 |
2 | 화웨이 | 미국 에너지부 | 심지 |
MySQL
으아아아GROUP_CONCAT
聚合函数来获取您的第一个输出表。它自己的ORDER BY
절을 사용하면 행의 연결 순서를 확인할 수 있습니다.창 함수를 사용할 수 있습니다.
으아아아ROW_NUMBER
通过对供应商进行分区来为 Contact 表中的每一行分配排名。然后使用IF
语句将联系人分成三列,该语句将检查排名的三个可能值。MAX
집계 함수를 사용하면 null 값을 제거할 수 있습니다.공급업체당 고객이 3명 이상인 경우 두 번째 쿼리가 작동하지 않을 수 있습니다. 이 경우 가능한 최대 공급업체 수를 포함하도록 쿼리를 수정하거나 준비된 문을 사용할 수 있습니다. 그러한 솔루션이 정말로 필요하다면 아래에 의견을 남겨주세요.
더 나은 이해를 위해 여기에서 이러한 솔루션을 사용할 수 있습니다. 첫 번째 솔루션은 모든 MySQL 버전에서 작동하지만 두 번째 솔루션은 MySQL 8에서 작동합니다.