Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membalikkan GROUP_CONCAT untuk Mengeluarkan Nilai Individu daripada Rentetan Agregat dalam MySQL?

Bagaimanakah Saya Boleh Membalikkan GROUP_CONCAT untuk Mengeluarkan Nilai Individu daripada Rentetan Agregat dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-17 07:24:25852semak imbas

How Can I Reverse GROUP_CONCAT to Extract Individual Values from Aggregated Strings in MySQL?

Merungkai GROUP_CONCAT: Mengekstrak Nilai Individu daripada Data Agregat

Dalam bidang pengurusan pangkalan data, fungsi GROUP_CONCAT ialah alat yang berkuasa untuk mengagregatkan berbilang nilai ke dalam rentetan tunggal yang dipisahkan koma. Walau bagaimanapun, mungkin terdapat keadaan apabila anda menghadapi cabaran yang bertentangan: merungkai rentetan agregat ini ke dalam komponen individunya.

Intipati Masalah

Pertimbangkan data berikut dalam jadual bernama "warna":

| id | colors               |
|----+----------------------|
| 1  | Red,Green,Blue       |
| 2  | Orangered,Periwinkle |

Matlamat anda adalah untuk mengubah data ini menjadi struktur yang setiap warna diwakili sebagai baris yang berasingan:

| id | colors     |
|----+------------|
| 1  | Red        |
| 1  | Green      |
| 1  | Blue       |
| 2  | Orangered  |
| 2  | Periwinkle |

Penyelesaian: Membongkar Rentetan

MySQL menyediakan beberapa teknik untuk menyelesaikan tugasan ini. Satu pendekatan menggunakan fungsi SUBSTRING_INDEX dan SUBSTRING seperti berikut:

SELECT
  id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color
FROM
  colors
  INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
  ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit
ORDER BY
  id,
  n.digit

Pertanyaan ini beroperasi dengan:

  1. Menggunakan SUBSTRING_INDEX untuk mencari kedudukan permulaan dan akhir setiap warna dalam koma- rentetan dipisahkan.
  2. Menyertai dengan jadual yang menjana nombor yang sepadan dengan kedudukan warna.
  3. Menapis baris yang bilangan warna melebihi julat jadual yang dicantumkan.
  4. Mengisih keputusan mengikut id dan kedudukan warna.

Menyingkap Misteri: Pengagregatan Songsang atau Un-GROUP_CONCAT

Operasi yang diterangkan di atas sering dirujuk sebagai "pengagregatan terbalik" atau "un-GROUP_CONCAT." Ia membolehkan anda mengekstrak dan menyahhimpun nilai individu daripada data yang sebelum ini telah diagregatkan atau digabungkan. Teknik ini amat berguna apabila anda perlu melakukan analisis atau transformasi lanjut pada titik data individu dan bukannya agregat itu sendiri.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membalikkan GROUP_CONCAT untuk Mengeluarkan Nilai Individu daripada Rentetan Agregat dalam MySQL?. 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