Bagaimanakah anda boleh menyertai jadual MySQL berdasarkan data dalam medan JSON?

Barbara Streisand
Lepaskan: 2024-10-30 15:04:03
asal
435 orang telah melayarinya

How can you join MySQL tables based on data within a JSON field?

Menggunakan Medan JSON MySQL untuk Gabungan Jadual Kompleks

Masalah:

Dalam pangkalan data MySQL skema, medan JSON menyimpan senarai ID. Matlamatnya adalah untuk melaksanakan operasi pada medan JSON ini dan menggunakan keputusan dalam pertanyaan SQL untuk menyertai jadual pengguna dengan jadual kumpulan pengguna.

Contoh Senario:

Pertimbangkan jadual berikut:

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)
);
Salin selepas log masuk

Dengan data berikut:

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]');
Salin selepas log masuk

Keputusan yang Diingini:

Hasil yang dikehendaki ialah pertanyaan yang mendapatkan semula data berikut:

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

Penyelesaian:

Penyelesaian melibatkan penggunaan fungsi JSON_CONTAINS untuk menyemak sama ada ID kumpulan pengguna wujud dalam medan JSON pengguna jadual.

<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

Nota:

Pengendali $ dalam fungsi JSON_CONTAINS mewakili punca dokumen JSON.

Atas ialah kandungan terperinci Bagaimanakah anda boleh menyertai jadual MySQL berdasarkan data dalam 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!