Rumah > pangkalan data > tutorial mysql > Bagaimanakah Fungsi Pemulangan Berbilang Set Berkelakuan dalam Klausa SELECT PostgreSQL Merentasi Versi Berbeza?

Bagaimanakah Fungsi Pemulangan Berbilang Set Berkelakuan dalam Klausa SELECT PostgreSQL Merentasi Versi Berbeza?

Patricia Arquette
Lepaskan: 2025-01-17 23:42:09
asal
874 orang telah melayarinya

How Do Multiple Set-Returning Functions Behave in PostgreSQL's SELECT Clause Across Different Versions?

Pengendalian PostgreSQL Berbilang Fungsi Pengembalian Set dalam Penyata SELECT: Analisis Khusus Versi

Tingkah laku PostgreSQL apabila menghadapi berbilang fungsi pengembalian set dalam pernyataan SELECT berbeza dengan ketara bergantung pada versi pangkalan data.

PostgreSQL 10 dan Kemudian:

Dalam versi 10 dan ke atas, fungsi ini dilaksanakan secara serentak. Output distrukturkan sedemikian rupa sehingga fungsi yang menghasilkan paling banyak baris menentukan jumlah bilangan baris dalam set hasil. Output fungsi yang lebih pendek dilapisi dengan nilai NULL untuk mengekalkan penjajaran ini, dengan berkesan mencipta hasil seperti sambung silang.

PostgreSQL 9.6 dan Terdahulu:

Sebelum versi 9.6, hasilnya berbeza dengan ketara. Jumlah bilangan baris yang dijana bersamaan dengan gandaan sepunya terkecil (LCM) bagi kiraan baris daripada setiap fungsi pengembalian set. Ini boleh membawa kepada hasil yang tidak dapat diramalkan dan berkemungkinan tidak diingini, terutamanya apabila kiraan baris tidak berkongsi faktor yang sama.

Contoh Ilustrasi:

Mari kita periksa pertanyaan:

<code class="language-sql">SELECT generate_series(1, 3), generate_series(5, 7);</code>
Salin selepas log masuk

Output PostgreSQL 10:

<code> generate_series | generate_series 
-----------------+-----------------
               1 |               5
               2 |               6
               3 |               7
               NULL |               NULL
               NULL |               NULL
               NULL |               NULL</code>
Salin selepas log masuk

PostgreSQL 9.6- Output:

<code> generate_series | generate_series 
-----------------+-----------------
               1 |               5
               2 |               6
               3 |               7
               1 |               5
               2 |               6
               3 |               7
               1 |               5
               2 |               6
               3 |               7</code>
Salin selepas log masuk

Pertimbangan Utama:

  • PostgreSQL 10 dan kemudiannya melarang penggunaan fungsi pengembalian set di dalam ungkapan CASE dan COALESCE.
  • Untuk kawalan yang lebih baik dan hasil yang boleh diramal, menggunakan LATERAL JOIN dengan ROWS FROM (...) amat disyorkan dan bukannya secara langsung memasukkan berbilang fungsi pengembalian set dalam senarai SELECT.

Dokumentasi Berkaitan:

Atas ialah kandungan terperinci Bagaimanakah Fungsi Pemulangan Berbilang Set Berkelakuan dalam Klausa SELECT PostgreSQL Merentasi Versi Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan