Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melakukan Gabungan Bersyarat dalam MySQL Berdasarkan Jenis Dikira?

Bagaimanakah Saya Boleh Melakukan Gabungan Bersyarat dalam MySQL Berdasarkan Jenis Dikira?

Linda Hamilton
Lepaskan: 2024-12-13 13:55:14
asal
312 orang telah melayarinya

How Can I Perform Conditional Joins in MySQL Based on an Enumerated Type?

Penyertaan Bersyarat dalam MySQL: Mencantumkan Jadual Secara Dinamik Berdasarkan Jenis Dikira

Masalah:

Pertimbangkan skema jadual MySQL dengan lajur id1, id2 dan jenis. Lajur jenis ialah nilai terhitung yang menentukan nama jadual lain. Tugasnya adalah untuk melaksanakan cantuman dengan jadual yang ditentukan berdasarkan nilai jenis.

Sebagai contoh, anda ingin melakukan cantuman bersyarat berikut:

  • Jika jenis ialah 'table1 ', sertai jadual1
  • Jika taip ialah 'jadual2', sertai table2

Penyelesaian:

Walaupun MySQL tidak menyokong cantuman bersyarat secara langsung, satu penyelesaian ialah menggunakan gabungan kiri berbilang jadual dengan operator kes:

SELECT
t.id,
t.type,
t2.id AS id2,
t3.id AS id3

FROM t
LEFT JOIN t2 ON t2.id = t.id AND t.type = 't2'
LEFT JOIN t3 ON t3.id = t.id AND t.type = 't3'
Salin selepas log masuk

Dalam pertanyaan ini:

  • Jadual utama t dicantumkan dengan t2 dan t3.
  • Syarat dalam LEFT JOIN memastikan bahawa cantuman dilakukan hanya jika lajur jenis sepadan dengan nama jadual yang sepadan.
  • Baris yang terhasil mengandungi semua lajur daripada t jadual, bersama-sama dengan lajur yang sepadan daripada jadual bercantum (id2 daripada t2 dan id3 daripada t3) jika syarat cantum ialah bertemu.

Nota:

Penyelesaian ini memerlukan semua jadual gabungan berpotensi wujud dalam pangkalan data, tanpa mengira nilai jenisnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Gabungan Bersyarat dalam MySQL Berdasarkan Jenis Dikira?. 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