Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengagregatkan Lajur dengan Cekap dalam Pertanyaan Berbilang Lajur?
Agregat Lajur dalam Pertanyaan dengan Banyak Lajur Lain
Apabila membuat pertanyaan dengan beberapa lajur dalam set hasil, mengagregatkan satu lajur boleh menjadi cabaran. Walaupun anda boleh menggunakan kaedah yang disebut dalam jawapan yang dirujuk, ia mungkin membawa kepada pertanyaan bertele-tele.
Memudahkan Pertanyaan (PostgreSQL 9.1 dan Kemudian)
PostgreSQL 9.1 dan lebih baharu memberikan pendekatan yang lebih mudah. Dengan mengumpulkan mengikut kunci utama jadual, anda boleh mengagregatkan lajur yang ditentukan tanpa perlu memasukkan semua lajur dalam klausa GROUP BY.
Sebagai contoh, jika foo1 ialah kunci utama dalam pertanyaan sampel anda:
SELECT foo1, foo2, foo3, foo4, string_agg(aggregated_field, ', ') FROM tbl1 GROUP BY 1 ORDER BY foo5, foo6
Berbilang Jadual dan Perhubungan
Apabila anda pertanyaan melibatkan berbilang jadual dengan pelbagai perhubungan, selalunya lebih cekap untuk mengagregatkan dahulu dan kemudian bergabung:
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 ...
Dengan memisahkan operasi pengagregatan dan bergabung, pertanyaan anda menjadi lebih cekap dan lebih mudah dibaca.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengagregatkan Lajur dengan Cekap dalam Pertanyaan Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!