Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melakukan Gabungan Jadual Bersyarat dalam MySQL?

Bagaimanakah Saya Boleh Melakukan Gabungan Jadual Bersyarat dalam MySQL?

DDD
Lepaskan: 2024-12-15 19:14:10
asal
803 orang telah melayarinya

How Can I Perform Conditional Table Joins in MySQL?

Jadual Bersyarat Bercantum dalam MySQL

Pertimbangkan senario di mana anda mempunyai jadual dengan lajur id1, id2 dan jenis, di mana jenis ialah nilai terhitung mewakili nama jadual lain. Anda berhasrat untuk melakukan gabungan dengan jadual sebenar berdasarkan jenis yang ditentukan.

Secara tradisinya, anda mungkin mempertimbangkan untuk menggunakan pernyataan suis untuk menyertai jadual yang berkaitan secara bersyarat:

switch($type) {
  case 'table1':
    JOIN table1;
    break;
  case 'table2':
    JOIN table2;
    break;
}
Salin selepas log masuk

Walau bagaimanapun, MySQL tidak secara langsung menyokong pendekatan ini. Sebaliknya, anda boleh mencapai gabungan bersyarat menggunakan gabungan klausa LEFT JOIN dan ON. Contohnya, untuk menyertai jadual table1 dan table2 berdasarkan nilai jenis, anda boleh menggunakan pertanyaan berikut:

SELECT
  t.id,
  t.type,
  t1.id AS id2,  -- Assuming table1 alias is 't1'
  t2.id AS id3   -- Assuming table2 alias is 't2'

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

Dalam pertanyaan ini, t mewakili jadual asal dengan lajur id1, id2 dan taip. Klausa LEFT JOIN melakukan bukan equijoins berdasarkan keadaan jenis. Dengan menyatakan alias t1 dan t2, anda boleh mendapatkan semula lajur daripada jadual yang dicantumkan.

Pendekatan ini membolehkan anda untuk menyertai jadual secara bersyarat berdasarkan nilai yang disimpan dalam lajur jenis, meniru gelagat penyataan suis dengan berkesan untuk gabungan jadual dalam MySQL.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Gabungan Jadual Bersyarat dalam MySQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan