Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Jadual PostgreSQL dengan Jenis Array dan Mengekalkan Susunan Elemen?

Bagaimana untuk Menyertai Jadual PostgreSQL dengan Jenis Array dan Mengekalkan Susunan Elemen?

Susan Sarandon
Susan Sarandonasal
2024-12-15 13:53:25505semak imbas

How to Join PostgreSQL Tables with Array Types and Maintain Element Order?

Menyertai Jadual PostgreSQL dengan Jenis Tatasusunan dan Mengekalkan Susunan Elemen

Pertimbangkan dua jadual dalam pangkalan data:

  • item: Mengandungi baris ID unik bersama dengan pelbagai medan.
  • some_chosen_data_in_order: Termasuk medan jenis tatasusunan bernama id_items dengan nilai ID daripada jadual item yang disusun dalam urutan tertentu.

Untuk mendapatkan semula data daripada jadual item berdasarkan nilai medan tatasusunan dalam some_chosen_data_in_order sambil mengekalkan pesanannya, anda boleh menggunakan pertanyaan berikut:

SELECT t.*
FROM unnest(ARRAY[1,2,3,2,3,5]) item_id
LEFT JOIN items t on t.id=item_id

Pertanyaan ini melaksanakan tindakan berikut:

  • unnest(ARRAY[1,2,3,2,3,5] ): Menyahsarang tatasusunan yang disediakan kepada elemen individu, mewujudkan urutan baris.
  • LEFT JOIN item t pada t.id=item_id: Mencantumkan elemen yang tidak bersarang pada jadual item berdasarkan medan id.
  • LEFT JOIN memastikan bahawa semua elemen yang tidak bersarang dikembalikan, walaupun mereka tidak mempunyai baris yang sepadan dalam item jadual.

Dengan menggunakan pertanyaan ini, anda boleh mendapatkan semula item dalam susunan yang ditentukan oleh tatasusunan id_items dalam jadual some_chosen_data_in_order.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual PostgreSQL dengan Jenis Array dan Mengekalkan Susunan Elemen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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