Menggabungkan nilai medan dalam PostgreSQL untuk berbilang rekod dan satu ID
Banyak aplikasi pangkalan data memerlukan gabungan berbilang nilai yang berkaitan dengan pengecam tunggal ke dalam rentetan sambungan tunggal. Operasi ini amat berguna apabila menanyakan jadual dengan berbilang rekod bagi setiap ID unik.
Fungsi GROUP_CONCAT dalam MySQL
Dalam MySQL, fungsi GROUP_CONCAT menyediakan cara langsung untuk mencapai matlamat ini. Walau bagaimanapun, fungsi GROUP_CONCAT tidak tersedia secara langsung dalam PostgreSQL.
PostgreSQL yang setara dengan GROUP_CONCAT
Dalam PostgreSQL, fungsi string_agg adalah setara dengan GROUP_CONCAT MySQL. Fungsi ini membolehkan anda menggabungkan rentetan sambil menentukan pembatas (seperti koma) untuk memisahkan nilai yang digabungkan.
Contoh: Pertanyaan PostgreSQL menggunakan string_agg
Pertimbangkan jadual contoh yang disediakan dalam soalan asal:
id | some_column |
---|---|
TM67 | 4 |
TM67 | 9 |
TM67 | 72 |
TM99 | 2 |
TM99 | 3 |
Pertanyaan PostgreSQL berikut boleh digunakan untuk menggabungkan nilai lajur some_column untuk setiap id unik:
<code class="language-sql">SELECT id, string_agg(some_column::text, ',') AS values FROM the_table GROUP BY id;</code>
Keputusan:
id | values |
---|---|
TM67 | 4,9,72 |
TM99 | 2,3 |
Pertanyaan ini mendapatkan semula satu baris untuk setiap id unik dan menggabungkan nilai beberapa lajur lajur ke dalam rentetan tunggal dengan koma sebagai pembatas.
Nota: Fungsi string_agg telah diperkenalkan dalam PostgreSQL versi 9.0. Untuk versi PostgreSQL yang lebih awal, anda boleh menggunakan pelanjutan generate_series atau group_concat_agg sebagai alternatif untuk mencapai fungsi yang sama. Penukaran jenis some_column::text
memastikan walaupun some_column
bukan jenis teks, ia akan digabungkan dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Nilai Medan dalam PostgreSQL untuk Berbilang Rekod dengan ID Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!