Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Rentetan dalam KUMPULAN PostgreSQL OLEH Pertanyaan?

Bagaimana untuk Menggabungkan Rentetan dalam KUMPULAN PostgreSQL OLEH Pertanyaan?

DDD
Lepaskan: 2025-01-22 08:37:12
asal
503 orang telah melayarinya

How to Concatenate Strings Within a PostgreSQL GROUP BY Query?

Bagaimana untuk menggabungkan rentetan dalam pertanyaan GROUP BY PostgreSQL?

Soalan:

Dalam PostgreSQL, bagaimana untuk menggabungkan rentetan medan dalam pertanyaan GROUP BY?

Contoh:

Pertimbangkan jadual dengan skema berikut:

ID COMPANY_ID EMPLOYEE
1 1 Anna
2 1 Bill
3 2 Carol
4 2 Dave

Matlamatnya adalah untuk mengumpulkan mengikut COMPANY_ID dan menggabungkan nilai EMPLOYEE, menghasilkan yang berikut:

COMPANY_ID EMPLOYEE
1 Anna, Bill
2 Carol, Dave

Penyelesaian:

PostgreSQL 9.0 atau lebih tinggi:

  • Gunakan fungsi string_agg(expression, delimiter):
SELECT company_id, string_agg(employee, ', ')
FROM mytable
GROUP BY company_id;
Salin selepas log masuk

PostgreSQL 8.4.x:

  • Gunakan fungsi array_agg(expression) untuk menggabungkan array_to_string():
SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM mytable
GROUP BY company_id;
Salin selepas log masuk

PostgreSQL 8.3.x dan lebih awal:

  • Buat fungsi agregat tersuai untuk menggabungkan rentetan:
CREATE AGGREGATE textcat_all(
    basetype = text,
    sfunc = textcat,
    stype = text,
    initcond = ''
);

SELECT company_id, textcat_all(employee)
FROM mytable
GROUP BY company_id;
Salin selepas log masuk
  • Secara pilihan, anda boleh mencipta fungsi untuk menyesuaikan gelagat gabungan, seperti menambah pemisah.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Rentetan dalam KUMPULAN PostgreSQL OLEH Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan