Saya mempunyai dua jadual bernama "Pembekal" dan "Kenalan".
Data dalam jadual kenalan sepadan dengan rekod dalam jadual pembekal.
Data pembekal
id | Nama |
---|---|
1 | Kuasa kuda |
2 | Huawei |
Data hubungan
id | ID Pembekal | Hubungi |
---|---|---|
1 | 1 | John |
2 | 1 | Smith |
3 | 1 | Akan |
4 | 2 | Jabatan Tenaga AS |
5 | 2 | Wick |
Sekarang, saya ingin membuat pertanyaan yang sepatutnya mengembalikan hasil berikut
id | Nama | Hubungi |
---|---|---|
1 | Kuasa kuda | John, Smith, Will |
2 | Huawei | Jabatan Tenaga A.S., Wake |
Atau keputusan berikut harus dikembalikan
id | Nama | Hubungi | Hubungi | Hubungi |
---|---|---|---|---|
1 | Kuasa kuda | John | Smith | Akan |
2 | Huawei | Jabatan Tenaga AS | Wick |
Anda boleh menggunakan MySQL
GROUP_CONCAT
聚合函数来获取您的第一个输出表。它自己的ORDER BY
klausa akan membolehkan anda menyemak susunan penyambungan baris.Anda boleh menggunakan fungsi tetingkap
ROW_NUMBER
通过对供应商进行分区来为 Contact 表中的每一行分配排名。然后使用IF
语句将联系人分成三列,该语句将检查排名的三个可能值。MAX
Fungsi pengagregatan akan membolehkan anda mengalih keluar nilai nol.Pertanyaan kedua mungkin tidak berfungsi jika terdapat lebih daripada tiga pelanggan bagi setiap pembekal. Dalam kes ini, anda boleh mengubah suai pertanyaan untuk memasukkan bilangan maksimum pembekal yang mungkin, atau menggunakan pernyataan yang disediakan. Jika anda benar-benar memerlukan penyelesaian sedemikian, sila tinggalkan komen di bawah.
Untuk pemahaman yang lebih baik, anda boleh menggunakan penyelesaian ini di sini. Penyelesaian pertama berfungsi dengan mana-mana versi MySQL, manakala penyelesaian kedua berfungsi dengan MySQL 8.