Dalam PostgreSQL, mengagregatkan satu lajur sambil memasukkan lajur lain dalam pertanyaan boleh menyusahkan. Walau bagaimanapun, terdapat penyelesaian yang tersedia.
PostgreSQL 9.1 dan kemudiannya memudahkan proses. Apabila mengagregatkan dengan GROUP BY, anda hanya perlu memasukkan kunci utama jadual. Oleh itu, jika foo1 ialah kunci utama tbl1, pertanyaan anda boleh dipermudahkan kepada:
SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ') FROM tbl1 GROUP BY 1 ORDER BY foo7, foo8;
Untuk pertanyaan dengan berbilang jadual dan perhubungan, ia boleh menjadi lebih cekap untuk agregat dahulu dan sertai kemudian. Contohnya:
SELECT t1.foo1, t1.foo2, ... , t2.bar1, t2.bar2, ... , a.aggregated_col FROM tbl1 t1 LEFT JOIN tbl2 t2 ON ... ... LEFT JOIN ( SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col FROM agg_tbl a ON ... GROUP BY some_id ) a ON a.some_id = ?.some_id ORDER BY ...
Ini memastikan pengagregatan dilakukan hanya di bahagian pertanyaan yang berkaitan, meningkatkan prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Mengagregatkan Lajur Tunggal dengan Cekap dalam Pertanyaan PostgreSQL dengan Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!