Bagaimana untuk Sertai Jadual MySQL Berdasarkan Medan JSON?

Patricia Arquette
Lepaskan: 2024-10-30 16:04:33
asal
219 orang telah melayarinya

How to Join MySQL Tables Based on JSON Fields?

Menyertai Jadual MySQL Menggunakan Medan JSON

Apabila bekerja dengan medan JSON dalam MySQL, selalunya perlu untuk menyertai jadual berdasarkan data yang disimpan dalam ini padang. Walaupun menyertai jadual menggunakan perhubungan nilai kunci tradisional adalah mudah, melaksanakan gabungan berdasarkan kandungan medan JSON boleh memberikan cabaran tambahan.

Satu senario biasa melibatkan penyimpanan senarai ID dalam medan JSON dalam jadual (walaupun amalan ini tidak disyorkan untuk prestasi optimum dan integriti data). Untuk menggambarkan cara mendekati situasi ini, mari kita pertimbangkan contoh ringkas:

<code class="sql">CREATE TABLE user (
    user_id INT,
    user_name VARCHAR(50),
    user_groups JSON
);

CREATE TABLE user_group (
    user_group_id INT,
    group_name VARCHAR(50)
);

INSERT INTO user_group (user_group_id, group_name) VALUES (1, 'Group A');
INSERT INTO user_group (user_group_id, group_name) VALUES (2, 'Group B');
INSERT INTO user_group (user_group_id, group_name) VALUES (3, 'Group C');

INSERT INTO user (user_id, user_name, user_groups) VALUES (101, 'John', '[1,3]');</code>
Salin selepas log masuk

Di sini, kami mempunyai jadual pengguna dengan medan JSON bernama user_groups yang menyimpan senarai ID kumpulan. Matlamat kami adalah untuk mencipta pertanyaan yang mengembalikan hasil berikut:

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C
Salin selepas log masuk

Untuk mencapai matlamat ini, kami boleh memanfaatkan fungsi JSON_CONTAINS(), yang membolehkan kami menyemak sama ada dokumen JSON mengandungi nilai tertentu. Dengan menggunakan fungsi ini, kita boleh menyertai jadual pengguna dan kumpulan_pengguna seperti berikut:

<code class="sql">SELECT
    u.user_id,
    u.user_name,
    g.user_group_id,
    g.group_name
FROM
    user u
LEFT JOIN
    user_group g ON JSON_CONTAINS(u.user_groups, CAST(g.user_group_id as JSON), '$')</code>
Salin selepas log masuk

Pertanyaan ini pada asasnya berulang melalui elemen medan kumpulan_pengguna dan menyemak sama ada ia sepadan dengan id_kumpulan_pengguna bagi mana-mana kumpulan dalam jadual kumpulan_pengguna. Jika padanan ditemui, data yang sepadan daripada jadual kumpulan_pengguna dikembalikan.

Dengan menggunakan JSON_CONTAINS(), kami boleh melakukan gabungan dengan cekap berdasarkan data yang disimpan dalam medan JSON, membolehkan kami mengakses dan memanipulasi data kompleks struktur dengan cara yang mudah dan fleksibel.

Atas ialah kandungan terperinci Bagaimana untuk Sertai Jadual MySQL Berdasarkan Medan JSON?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!