Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Nama Pelakon untuk Setiap Filem dalam Pangkalan Data?

Bagaimana untuk Menggabungkan Nama Pelakon untuk Setiap Filem dalam Pangkalan Data?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-15 08:32:44644semak imbas

How to Concatenate Actor Names for Each Movie in a Database?

Sambungkan berbilang baris hasil bagi satu lajur, dikumpulkan mengikut lajur lain

Dalam jadual pangkalan data dengan nama lajur seperti "filem" dan "pelakon", anda mungkin perlu menggabungkan berbilang baris pelakon kepunyaan filem yang sama ke dalam satu rentetan yang dipisahkan koma.

<code>表:

| 电影 | 演员 |
|---|---|
| A | 1 |
| A | 2 |
| A | 3 |
| B | 4 |</code>

Keputusan yang dijangkakan:

<code>| 电影 | 演员列表 |
|---|---|
| A | 1, 2, 3 |
| B | 4 |</code>

Penyelesaian menggunakan fungsi string_agg():

Untuk melakukan ini, anda boleh memanfaatkan fungsi agregat string_agg(). Berikut ialah pertanyaan:

<code>SELECT 电影, string_agg(演员, ', ') AS 演员列表
FROM 表
GROUP BY 电影;</code>

Fungsi string_agg() menggabungkan nilai dalam lajur "Pelakon", memisahkannya dengan koma dan ruang. Klausa GROUP BY MOVIE memastikan bahawa keputusan dikumpulkan mengikut nama filem.

Nota lain:

  1. 1 dalam GROUP BY 1 ialah rujukan indeks kepada lajur pertama, dalam kes ini "Filem".
  2. string_agg() mengharapkan jenis data teks sebagai input. Jika lajur "pelakon" anda mempunyai jenis lain (contohnya, integer), anda mungkin perlu menukarnya secara eksplisit kepada teks, seperti string_agg(actor::text, ', ').
  3. Anda boleh menggunakan klausa ORDER BY dalam fungsi string_agg() untuk memesan nilai yang digabungkan (contohnya, ORDER BY aktor).

Kaedah ini menyediakan cara yang mudah dan cekap untuk menggabungkan berbilang baris lajur tertentu dan kumpulan dengan lajur lain.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Nama Pelakon untuk Setiap Filem dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn